Author: hhubner Date: 2006-10-22 12:42:37 -0400 (Sun, 22 Oct 2006) New Revision: 2025
Added: branches/xml-class-rework/thirdparty/uffi/doc/catalog-darwin.xml branches/xml-class-rework/thirdparty/uffi/doc/catalog-mandrake.xml branches/xml-class-rework/thirdparty/uffi/doc/catalog-suse90.xml branches/xml-class-rework/thirdparty/uffi/doc/catalog-suse91.xml branches/xml-class-rework/thirdparty/uffi/doc/catalog-ubuntu.xml branches/xml-class-rework/thirdparty/uffi/tests/objects.lisp Removed: branches/xml-class-rework/thirdparty/uffi/doc/html.tar.gz Modified: branches/xml-class-rework/thirdparty/uffi/ChangeLog branches/xml-class-rework/thirdparty/uffi/Makefile branches/xml-class-rework/thirdparty/uffi/NEWS branches/xml-class-rework/thirdparty/uffi/README branches/xml-class-rework/thirdparty/uffi/TODO branches/xml-class-rework/thirdparty/uffi/benchmarks/allocation.lisp branches/xml-class-rework/thirdparty/uffi/doc/Makefile branches/xml-class-rework/thirdparty/uffi/doc/bookinfo.xml branches/xml-class-rework/thirdparty/uffi/doc/catalog-suse.xml branches/xml-class-rework/thirdparty/uffi/doc/ref_aggregate.xml branches/xml-class-rework/thirdparty/uffi/doc/ref_declare.xml branches/xml-class-rework/thirdparty/uffi/doc/ref_func_libr.xml branches/xml-class-rework/thirdparty/uffi/doc/ref_object.xml branches/xml-class-rework/thirdparty/uffi/doc/ref_string.xml branches/xml-class-rework/thirdparty/uffi/doc/uffi.pdf branches/xml-class-rework/thirdparty/uffi/examples/Makefile branches/xml-class-rework/thirdparty/uffi/examples/Makefile.msvc branches/xml-class-rework/thirdparty/uffi/examples/acl-compat-tester.lisp branches/xml-class-rework/thirdparty/uffi/examples/arrays.lisp branches/xml-class-rework/thirdparty/uffi/examples/atoifl.lisp branches/xml-class-rework/thirdparty/uffi/examples/c-test-fns.c branches/xml-class-rework/thirdparty/uffi/examples/c-test-fns.lisp branches/xml-class-rework/thirdparty/uffi/examples/compress.lisp branches/xml-class-rework/thirdparty/uffi/examples/file-socket.lisp branches/xml-class-rework/thirdparty/uffi/examples/getenv.lisp branches/xml-class-rework/thirdparty/uffi/examples/gethostname.lisp branches/xml-class-rework/thirdparty/uffi/examples/getshells.lisp branches/xml-class-rework/thirdparty/uffi/examples/gettime.lisp branches/xml-class-rework/thirdparty/uffi/examples/run-examples.lisp branches/xml-class-rework/thirdparty/uffi/examples/strtol.lisp branches/xml-class-rework/thirdparty/uffi/examples/test-examples.lisp branches/xml-class-rework/thirdparty/uffi/examples/union.lisp branches/xml-class-rework/thirdparty/uffi/src/aggregates.lisp branches/xml-class-rework/thirdparty/uffi/src/corman/getenv-ccl.lisp branches/xml-class-rework/thirdparty/uffi/src/functions.lisp branches/xml-class-rework/thirdparty/uffi/src/libraries.lisp branches/xml-class-rework/thirdparty/uffi/src/objects.lisp branches/xml-class-rework/thirdparty/uffi/src/os.lisp branches/xml-class-rework/thirdparty/uffi/src/package.lisp branches/xml-class-rework/thirdparty/uffi/src/primitives.lisp branches/xml-class-rework/thirdparty/uffi/src/readmacros-mcl.lisp branches/xml-class-rework/thirdparty/uffi/src/strings.lisp branches/xml-class-rework/thirdparty/uffi/tests/Makefile branches/xml-class-rework/thirdparty/uffi/tests/Makefile.msvc branches/xml-class-rework/thirdparty/uffi/tests/arrays.lisp branches/xml-class-rework/thirdparty/uffi/tests/atoifl.lisp branches/xml-class-rework/thirdparty/uffi/tests/casts.lisp branches/xml-class-rework/thirdparty/uffi/tests/compress.lisp branches/xml-class-rework/thirdparty/uffi/tests/foreign-loader.lisp branches/xml-class-rework/thirdparty/uffi/tests/foreign-var.lisp branches/xml-class-rework/thirdparty/uffi/tests/getenv.lisp branches/xml-class-rework/thirdparty/uffi/tests/gethostname.lisp branches/xml-class-rework/thirdparty/uffi/tests/make.sh branches/xml-class-rework/thirdparty/uffi/tests/package.lisp branches/xml-class-rework/thirdparty/uffi/tests/strtol.lisp branches/xml-class-rework/thirdparty/uffi/tests/structs.lisp branches/xml-class-rework/thirdparty/uffi/tests/time.lisp branches/xml-class-rework/thirdparty/uffi/tests/uffi-c-test-lib.lisp branches/xml-class-rework/thirdparty/uffi/tests/uffi-c-test.c branches/xml-class-rework/thirdparty/uffi/tests/union.lisp branches/xml-class-rework/thirdparty/uffi/uffi-tests.asd branches/xml-class-rework/thirdparty/uffi/uffi.asd Log: current uffi release, does not fix memory leakage with pointers to pointers on freebsd. it seems that cffi is the way to go.
Modified: branches/xml-class-rework/thirdparty/uffi/ChangeLog =================================================================== --- branches/xml-class-rework/thirdparty/uffi/ChangeLog 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/ChangeLog 2006-10-22 16:42:37 UTC (rev 2025) @@ -1,3 +1,116 @@ +2006-10-10 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.5.17 + * src/functions.lisp: Patch from Edi Weitz for Lispworks 5/Linux + +2006-09-02 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.5.16 + * src/libraries.lisp: Add cygwin support + +2006-08-13 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.5.15 + * src/{objects,strings}.lisp: Add support for Lispworks 5 + thanks to patches from Bill Atkins + +2006-07-04 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.5.14 + * src/{objects,strings}.lisp: Apply patch from Edi Weitz + +2006-05-17 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.5.13 + * src/libraries.lisp: Revert buggy patch from Yaroslav Kavenchuk. + +2006-05-17 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.5.12 + * src/libraries.lisp: Patch from Yaroslav Kavenchuk to set + default drive letters on MS Windows. + +2006-05-11 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.5.11: Export new macro DEF-POINTER-VAR based on patch from + James Bielman to support defining variables on platforms which + support saving objects, such as openmcl + +2006-04-17 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.5.10: Commit patch from Gary King for openmcl's + feature list change + +2005-11-14 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.5.7 + * src/strings.lisp: Add with-foreign-strings by James Biel + +2005-11-14 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.5.6 + * src/os.lisp: Remove getenv setter + +2005-11-07 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.5.5 + * src/os.lisp: Add support for getenv getter and setter + +2005-09-17 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.5.4 + * src/objects.lisp: prepend _ character for entry + point on Allegro macosx, patch by Luis Oliveira + +2005-07-05 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.5.0 + * Remove vestigial LLGPL license notices as UFFI as been + BSD-licensed for several years. + +2005-06-09 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.4.39 + * tests/objects.lisp: Rename from pointers.lisp. + Fix test CHPTR.4 as noted by Jorg Hohle + * src/objects.lisp: Remove default from ensure-char-integer + +2005-06-09 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.4.38 + * src/libraries.lisp: Commit patch from Edi Weitz to + allow plain filename library names to allow underlying + lisp implementation to find foreign libraries in the + locations known to the operating system. + * tests/cast.lisp: Add :module keyword as noted by Jorg Hohle. + * src/strings.lisp: Avoid multiple evaluation of input + parameters for macros as noted by Jorg Hohle. + +2005-04-12 Kevin Rosenberg (kevin@rosenberg.net) + * Version 1.4.37 + * src/strings.lisp: Fix variable name + +2005-04-04 Kevin Rosenberg (kevin@rosenberg.net) + * src/strings.lisp, src/aggregates.lisp: Support change in SBCL copy + function [Thanks for Nathan Froyd and Zach Beane] + +2005-04-03 Kevin Rosenberg (kevin@rosenberg.net) + * src/objects.lisp: Commit patch from James Bielman to add + def-foreign-var support for OpenMCL + +2005-03-03 Kevin Rosenberg (kevin@rosenberg.net) + * src/primitives.lisp: Add support for :union types + [patch from Cyrus Harmon] + * tests/union.lisp, tests/structs.lisp: Tests for + union and structure types [from Cyrus Harmon] + +2005-02-22 Kevin Rosenberg (kevin@rosenberg.net) + * src/primitives.lisp, src/strings.lisp: Better support + for sb-unicode [from Yoshinori Tahara and R. Mattes] + +2005-01-22 Kevin Rosenberg (kevin@rosenberg.net) + * src/primitives.lisp: Better support SBCL-AMD64 + +2004-11-08 Kevin Rosenberg (kevin@rosenberg.net) + * src/strings.lisp: Better support sb-unicode + * tests/compress.lisp: Support sb-unicode + +2004-10-07 Kevin Rosenberg (kevin@rosenberg.net) + * src/objects.lisp: Add new function: + convert-from-foreign-usb8 + +2004-04-15 Kevin Rosenberg (kevin@rosenberg.net) + * src/objects.lisp: Add new functions: + MAKE-POINTER and POINTER-ADDRESS + +2004-04-13 Kevin Rosenberg (kevin@rosenberg.net) + * src/string.lisp: Add new FOREIGN-STRING-LENGTH + 2003-08-15 Kevin Rosenberg (kevin@rosenberg.net) * Added with-cast-pointer and def-foreign-var (patches submitted by Edi Weitz).
Modified: branches/xml-class-rework/thirdparty/uffi/Makefile =================================================================== --- branches/xml-class-rework/thirdparty/uffi/Makefile 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/Makefile 2006-10-22 16:42:37 UTC (rev 2025) @@ -5,13 +5,9 @@ # Programer: Kevin M. Rosenberg, M.D. # Date Started: Mar 2002 # -# CVS Id: $Id: Makefile,v 1.1 2004/06/23 08:27:10 hans Exp $ +# CVS Id: $Id$ # -# This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg -# -# UFFI users are granted the rights to distribute and use this software -# as governed by the terms of the Lisp Lesser GNU Public License -# (http://opensource.franz.com/preamble.html), also known as the LLGPL. +# This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
PKG:=uffi DEBPKG=cl-uffi
Modified: branches/xml-class-rework/thirdparty/uffi/NEWS =================================================================== --- branches/xml-class-rework/thirdparty/uffi/NEWS 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/NEWS 2006-10-22 16:42:37 UTC (rev 2025) @@ -1,3 +1 @@ -UFFI now passes all tests with SCL, SBCL, & OpenMCL in Debian. - -UFFI now uses ASDF system definition files. +UFFI now supports AllegroCL AMD64
Modified: branches/xml-class-rework/thirdparty/uffi/README =================================================================== --- branches/xml-class-rework/thirdparty/uffi/README 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/README 2006-10-22 16:42:37 UTC (rev 2025) @@ -1,5 +1,5 @@ Package: UFFI (Universal Foreign Language Interface) -Web site: http://uffi.med-info.com +Web site: http://uffi.b9.com Author: Kevin M. Rosenberg
@@ -14,7 +14,7 @@ uffi features into the specific syntax of supported Common Lisp implementations.
-Currently, AllegroCL v6.1 (Linux and Microsoft Windows), Lispworks -v4.2 (Linux and Microsoft Windows), and CMUCL are supported. +Currently, AllegroCL (Linux and Microsoft Windows), Lispworks (Linux +and Microsoft Windows), CMUCL, SBCL, and OpenMCL are supported.
Modified: branches/xml-class-rework/thirdparty/uffi/TODO =================================================================== --- branches/xml-class-rework/thirdparty/uffi/TODO 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/TODO 2006-10-22 16:42:37 UTC (rev 2025) @@ -1,5 +1,7 @@ - Run test-suite on MCL port
+- Add OpenMCL support for with-cast-pointer and def-foreign-var + - Add support for direct vector passing to and from foreign functions to avoid copying elements in and out of vector. -b +
Modified: branches/xml-class-rework/thirdparty/uffi/benchmarks/allocation.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/benchmarks/allocation.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/benchmarks/allocation.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Mar 2002 ;;;; -;;;; $Id: allocation.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(declaim (optimize (debug 3) (speed 3) (safety 1) (compilation-speed 0)))
Modified: branches/xml-class-rework/thirdparty/uffi/doc/Makefile =================================================================== --- branches/xml-class-rework/thirdparty/uffi/doc/Makefile 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/doc/Makefile 2006-10-22 16:42:37 UTC (rev 2025) @@ -6,13 +6,9 @@ # Programer: Kevin M. Rosenberg # Date Started: Mar 2002 # -# CVS Id: $Id: Makefile,v 1.1 2004/06/23 08:27:10 hans Exp $ +# CVS Id: $Id$ # -# This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg -# -# UFFI users are granted the rights to distribute and use this software -# as governed by the terms of the Lisp Lesser GNU Public License -# (http://opensource.franz.com/preamble.html), also known as the LLGPL. +# This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ##############################################################################
DOCFILE_BASE_DEFAULT:=uffi @@ -21,24 +17,42 @@
# Standard docfile processing
-DEBIAN=$(shell expr "`cat /etc/issue`" : '.*Debian.*') -SUSE=$(shell expr "`cat /etc/issue`" : '.*SuSE.*') -REDHAT=$(shell expr "`cat /etc/issue`" : '.*RedHat.*') +DEBIAN=$(shell expr "`cat /etc/issue 2> /dev/null`" : '.*Debian.*') +UBUNTU=$(shell expr "`cat /etc/issue 2> /dev/null`" : '.*Ubuntu.*') +SUSE=$(shell expr "`cat /etc/issue 2> /dev/null`" : '.*SuSE.*') +SUSE91=$(shell expr "`cat /etc/issue 2> /dev/null`" : '.*SuSE Linux 9.1.*') +REDHAT=$(shell expr "`cat /etc/issue 2> /dev/null`" : '.*Red Hat.*') +MANDRAKE=$(shell expr "`cat /etc/issue 2> /dev/null`" : '.*Mandrake.*') +DARWIN=$(shell expr "`uname -a`" : '.*Darwin.*')
- ifneq (${DEBIAN},0) OS:=debian else - ifneq (${SUSE},0) - OS=suse - else - ifneq (${REDHAT},0) - OS=redhat + ifneq (${SUSE91},0) + OS=suse91 + else + ifneq (${SUSE},0) + OS=suse + else + ifneq (${REDHAT},0) + OS=redhat + else + ifneq (${MANDRAKE},0) + OS=mandrake + else + ifneq (${DARWIN},0) + OS=darwin + else + ifneq (${UBUNTU},0) + OS=ubuntu + endif + endif + endif + endif endif endif endif
- ifndef DOCFILE_BASE DOCFILE_BASE=${DOCFILE_BASE_DEFAULT} endif
Modified: branches/xml-class-rework/thirdparty/uffi/doc/bookinfo.xml =================================================================== --- branches/xml-class-rework/thirdparty/uffi/doc/bookinfo.xml 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/doc/bookinfo.xml 2006-10-22 16:42:37 UTC (rev 2025) @@ -24,8 +24,8 @@ </author>
<printhistory> - <simpara>$Id: bookinfo.xml,v 1.1 2004/06/23 08:27:10 hans Exp $</simpara> - <simpara>File $Date: 2004/06/23 08:27:10 $</simpara> + <simpara>$Id$</simpara> + <simpara>File $Date$</simpara> </printhistory> <copyright> <year>2002-2003</year>
Added: branches/xml-class-rework/thirdparty/uffi/doc/catalog-darwin.xml =================================================================== --- branches/xml-class-rework/thirdparty/uffi/doc/catalog-darwin.xml 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/doc/catalog-darwin.xml 2006-10-22 16:42:37 UTC (rev 2025) @@ -0,0 +1,43 @@ +<?xml version="1.0" ?> +<!DOCTYPE catalog + PUBLIC "-//OASIS/DTD Entity Resolution XML Catalog V1.0//EN" + "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"> + +<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> + + <!-- The directory DTD and stylesheet files are installed under --> + <group xml:base="file:///sw/share/xml/" > + + <!-- Resolve DTD URL system ID to local file --> + <rewriteSystem + systemIdStartString="http://www.oasis-open.org/docbook/xml/4.2/" + rewritePrefix="dtd/docbookx/4.2.0/" /> + <!-- Resolve stylesheet URL to local file --> + <rewriteURI + uriStartString="http://docbook.sourceforge.net/release/xsl/current/" + rewritePrefix="xsl/docbook-xsl/" /> + + <!-- Resolve DTD PUBLIC identifiers --> + <nextCatalog catalog="dtd/xml/4.2/catalog.xml" /> + + <!-- To resolve simple DTD SYSTEM identifiers. --> + <!-- Note: this does not work with Java resolver --> + <!-- classes in Saxon or Xalan --> + <system + systemId="docbook.dtd" + uri="dtd/xml/4.2.0/xml/docbookx.dtd" /> + + <!-- To resolve short stylesheet references --> + <uri + name="docbook_html.xsl" + uri="xsl/docbook-xsl/xhtml/docbook.xsl" /> + <uri + name="docbook_chunk.xsl" + uri="xsl/docbook-xsl/xhtml/chunk.xsl" /> + <uri + name="docbook_fo.xsl" + uri="xsl/docbook-xsl/fo/docbook.xsl" /> + + </group> + +</catalog>
Added: branches/xml-class-rework/thirdparty/uffi/doc/catalog-mandrake.xml =================================================================== --- branches/xml-class-rework/thirdparty/uffi/doc/catalog-mandrake.xml 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/doc/catalog-mandrake.xml 2006-10-22 16:42:37 UTC (rev 2025) @@ -0,0 +1,43 @@ +<?xml version="1.0" ?> +<!DOCTYPE catalog + PUBLIC "-//OASIS/DTD Entity Resolution XML Catalog V1.0//EN" + "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"> + +<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> + + <!-- The directory DTD and stylesheet files are installed under --> + <group xml:base="file:///usr/share/sgml/docbook/" > + + <!-- Resolve DTD URL system ID to local file --> + <rewriteSystem + systemIdStartString="http://www.oasis-open.org/docbook/xml/4.2/" + rewritePrefix="xml-dtd-4.2/" /> + <!-- Resolve stylesheet URL to local file --> + <rewriteURI + uriStartString="http://docbook.sourceforge.net/release/xsl/current/" + rewritePrefix="xsl-stylesheets/" /> + + <!-- Resolve DTD PUBLIC identifiers --> + <nextCatalog catalog="xml-dtd-4.2/catalog.xml" /> + + <!-- To resolve simple DTD SYSTEM identifiers. --> + <!-- Note: this does not work with Java resolver --> + <!-- classes in Saxon or Xalan --> + <system + systemId="docbook.dtd" + uri="xml-dtd-4.2/docbookx.dtd" /> + + <!-- To resolve short stylesheet references --> + <uri + name="docbook_html.xsl" + uri="xsl-stylesheets/xhtml/docbook.xsl" /> + <uri + name="docbook_chunk.xsl" + uri="xsl-stylesheets/xhtml/chunk.xsl" /> + <uri + name="docbook_fo.xsl" + uri="xsl-stylesheets/fo/docbook.xsl" /> + + </group> + +</catalog>
Modified: branches/xml-class-rework/thirdparty/uffi/doc/catalog-suse.xml =================================================================== --- branches/xml-class-rework/thirdparty/uffi/doc/catalog-suse.xml 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/doc/catalog-suse.xml 2006-10-22 16:42:37 UTC (rev 2025) @@ -6,7 +6,7 @@ <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<!-- The directory DTD and stylesheet files are installed under --> - <group xml:base="file:///usr/share/sgml/" > + <group xml:base="file:///usr/share/xml/" >
<!-- Resolve DTD URL system ID to local file --> <rewriteSystem @@ -30,13 +30,13 @@ <!-- To resolve short stylesheet references --> <uri name="docbook_html.xsl" - uri="docbook/docbook-xsl/xhtml/docbook.xsl" /> + uri="docbook/stylesheet/nwalsh/current/xhtml/docbook.xsl" /> <uri name="docbook_chunk.xsl" - uri="docbook/docbook-xsl/xhtml/chunk.xsl" /> + uri="docbook/stylesheet/nwalsh/current/xhtml/chunk.xsl" /> <uri name="docbook_fo.xsl" - uri="docbook/docbook-xsl/fo/docbook.xsl" /> + uri="docbook/stylesheet/nwalsh/current/fo/docbook.xsl" />
</group>
Added: branches/xml-class-rework/thirdparty/uffi/doc/catalog-suse90.xml =================================================================== --- branches/xml-class-rework/thirdparty/uffi/doc/catalog-suse90.xml 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/doc/catalog-suse90.xml 2006-10-22 16:42:37 UTC (rev 2025) @@ -0,0 +1,43 @@ +<?xml version="1.0" ?> +<!DOCTYPE catalog + PUBLIC "-//OASIS/DTD Entity Resolution XML Catalog V1.0//EN" + "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"> + +<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> + + <!-- The directory DTD and stylesheet files are installed under --> + <group xml:base="file:///usr/share/sgml/" > + + <!-- Resolve DTD URL system ID to local file --> + <rewriteSystem + systemIdStartString="http://www.oasis-open.org/docbook/xml/4.2/" + rewritePrefix="db42xml/" /> + <!-- Resolve stylesheet URL to local file --> + <rewriteURI + uriStartString="http://docbook.sourceforge.net/release/xsl/current/" + rewritePrefix="docbook/docbook-xsl/" /> + + <!-- Resolve DTD PUBLIC identifiers --> + <nextCatalog catalog="db42xml/catalog.xml" /> + + <!-- To resolve simple DTD SYSTEM identifiers. --> + <!-- Note: this does not work with Java resolver --> + <!-- classes in Saxon or Xalan --> + <system + systemId="docbook.dtd" + uri="db42xml/docbookx.dtd" /> + + <!-- To resolve short stylesheet references --> + <uri + name="docbook_html.xsl" + uri="docbook/docbook-xsl/xhtml/docbook.xsl" /> + <uri + name="docbook_chunk.xsl" + uri="docbook/docbook-xsl/xhtml/chunk.xsl" /> + <uri + name="docbook_fo.xsl" + uri="docbook/docbook-xsl/fo/docbook.xsl" /> + + </group> + +</catalog>
Added: branches/xml-class-rework/thirdparty/uffi/doc/catalog-suse91.xml =================================================================== --- branches/xml-class-rework/thirdparty/uffi/doc/catalog-suse91.xml 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/doc/catalog-suse91.xml 2006-10-22 16:42:37 UTC (rev 2025) @@ -0,0 +1,48 @@ +<?xml version="1.0" ?> +<!DOCTYPE catalog + PUBLIC "-//OASIS/DTD Entity Resolution XML Catalog V1.0//EN" + "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"> + +<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> + + <!-- The directory DTD and stylesheet files are installed under --> + <group xml:base="file:///usr/share/xml/" > + + <!-- Resolve DTD URL system ID to local file --> + <rewriteSystem + systemIdStartString="http://www.oasis-open.org/docbook/xml/4.2/" + rewritePrefix="docbook/schema/dtd/4.2/" /> + <!-- Resolve stylesheet URL to local file --> + <rewriteURI + uriStartString="http://docbook.sourceforge.net/release/xsl/current/" + rewritePrefix="docbook/stylesheet/nwalsh/current/" /> + + <!-- Resolve DTD PUBLIC identifiers --> + <nextCatalog catalog="docbook/schema/dtd/4.2/catalog.xml" /> + + <!-- To resolve simple DTD SYSTEM identifiers. --> + <!-- Note: this does not work with Java resolver --> + <!-- classes in Saxon or Xalan --> + <system + systemId="docbook.dtd" + uri="docbook/schema/dtd/4.2/docbookx.dtd" /> + <uri + name="docbookx.dtd" + uri="docbook/schema/dtd/4.2/docbookx.dtd" /> + <system + systemId="docbookx.dtd" + uri="docbook/schema/dtd/4.2/docbookx.dtd" /> + <!-- To resolve short stylesheet references --> + <uri + name="docbook_html.xsl" + uri="docbook/stylesheet/nwalsh/current/xhtml/docbook.xsl" /> + <uri + name="docbook_chunk.xsl" + uri="docbook/stylesheet/nwalsh/current/xhtml/chunk.xsl" /> + <uri + name="docbook_fo.xsl" + uri="docbook/stylesheet/nwalsh/current/fo/docbook.xsl" /> + + </group> + +</catalog>
Added: branches/xml-class-rework/thirdparty/uffi/doc/catalog-ubuntu.xml =================================================================== --- branches/xml-class-rework/thirdparty/uffi/doc/catalog-ubuntu.xml 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/doc/catalog-ubuntu.xml 2006-10-22 16:42:37 UTC (rev 2025) @@ -0,0 +1,43 @@ +<?xml version="1.0" ?> +<!DOCTYPE catalog + PUBLIC "-//OASIS/DTD Entity Resolution XML Catalog V1.0//EN" + "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"> + +<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> + + <!-- The directory DTD and stylesheet files are installed under --> + <group xml:base="file:///usr/share/sgml/docbook/" > + + <!-- Resolve DTD URL system ID to local file --> + <rewriteSystem + systemIdStartString="http://www.oasis-open.org/docbook/xml/4.2/" + rewritePrefix="dtd/xml/4.2/" /> + <!-- Resolve stylesheet URL to local file --> + <rewriteURI + uriStartString="http://docbook.sourceforge.net/release/xsl/current/" + rewritePrefix="stylesheet/xsl/nwalsh/" /> + + <!-- Resolve DTD PUBLIC identifiers --> + <nextCatalog catalog="dtd/xml/4.2/catalog.xml" /> + + <!-- To resolve simple DTD SYSTEM identifiers. --> + <!-- Note: this does not work with Java resolver --> + <!-- classes in Saxon or Xalan --> + <system + systemId="docbook.dtd" + uri="dtd/xml/4.2/xml/docbookx.dtd" /> + + <!-- To resolve short stylesheet references --> + <uri + name="docbook_html.xsl" + uri="stylesheet/xsl/nwalsh/xhtml/docbook.xsl" /> + <uri + name="docbook_chunk.xsl" + uri="stylesheet/xsl/nwalsh/xhtml/chunk.xsl" /> + <uri + name="docbook_fo.xsl" + uri="stylesheet/xsl/nwalsh/fo/docbook.xsl" /> + + </group> + +</catalog>
Deleted: branches/xml-class-rework/thirdparty/uffi/doc/html.tar.gz =================================================================== --- branches/xml-class-rework/thirdparty/uffi/doc/html.tar.gz 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/doc/html.tar.gz 2006-10-22 16:42:37 UTC (rev 2025) @@ -1,85 +0,0 @@ -�qZ�?�]�r�8��_�)p4u&��u�َ��ę�*�Z;;s~��H�"9�H�y�<��@�(��Y�F��X��F����8FV��nj�V��n��Z�ۮ鿣��n�S���N�E�^���/H��3��~@=B^|ccn/�o��?��������b��Z�՚7��v���� �7���Ԏ�?�,2f����T��J�نcr�����s��}U����6����d;���No���织���A�!_����������ͻj���[���?�J<j�<�V�U����DJ� p����dR�4+��X}�g� i��a��hOV��,AˢA���os�ԯ���ӥ�͐Q�w3b%xg����m�αf凩�JĐݖ�T��W�R�g��.�j�&���z_䔹��?%}��@8��f O#��1�8�7���rL-�|�z�Ө�a��߈�,�3����m��&{3�DD[����'�d��H1,C!t7{V�1wB3*63�x�8�iBwC���^�|��$hU���sڻ1���a�m:�o�о�Ȅ���V�o��p4������#Er$�߃C�w)�|�D���c��$�;���όi`�� J 5�����'|$:����w�h -��F-��l;�I�?�'ը=_ҽO0ضlZ��*���r٦����(.��t���J�,ҥ�L^V�6R�!q3!�C�bQՄ�~��=��i�#j1�ox��| }���BE�����)!78�;�u-n�&�o��R��p��z��7U�pSś�_B���� T^�z���m��r:�lBG0�a�v��;Dz� ���M��R��|&ԁ��FB���q�B[܂�2�(- �l�?�����&� ��e� ���G��F0 ĥ��2�}0���H���X`�#梚"��������ƒ��DKF�^�G,��meiY�s2V�[��m#k�w����a-��4O��lI9˧Z��%���g������sB�� Xb����N��oպ�������O�Bp9|����lFO�~躎0�����}�y�� �=����'��+����պ "oHրhwַ "`��Z��5�;�0�6&���0��NB~�qJ��4��eJ��$��l:���9�@a�;��]�"&1����*Z��Q�3_��>Sd���� ���3JX���!�x��w��O�{���^E�,mD�cOG��0��}��Նn�MfM/�`�8c�U�� �G?P��r����'�z�5 T`2z|s��31E�yE�\�^��Ђ��({UQ#�jc�M@@`1">�8`8�~؇M9�L�`J�,�0)�#��M�A�*�����e9TL���pX:x����[Ojňu�� �Z�Ǡ��`�5d:.��e܈��m��Ƃ��� �[��qQ�����t�bƣʤL�y&�-��c.��43�1�@�f���a�FB��]ϟZ� l.�w�Ü3d7��E7����}s��s�ѳu*�_�l��u��F�u��#�;����f�O�3ޣ�Zb~��K�� -��P:��ފk{z�FyCȗ�ھ�.�Cz��J��CU(��� �+��|$�6rbκ`��m�4�wM�P�؈�3-�"� `��-��l�3DP�⑨��\���I|�ۛ��k�b��w"~ƝJ��<y����ǧ�����]��c���[Ҫ�/Ƚ��ȸQ��"��M��b��P9����"�^�o�-≉�}�cn[��>3w�&b�_�y|\��\EB�m���7 +�J�r�����:^��v��gP��z����1ǹ�ř0��]�x5����we�8�Y� -MfJ@��I ��oJgą:7�f�F!����|�g���.�=�.�VW�����a������?Ϗ�����$�w1�ﶻ�l�g��:��#�?\�/}?�_?T��m��|���_<�ѣ�Ɗ>�{��#�!��ud��k�p��_�U�GC��g�ml�l3?�����V�]oH�>�$Pஹ<�|��!�U�)�1D0`�_�İOO���*!���r���C�lkM/NO������g�'*iV���M��.�%a"��D�$V��J�@��I�oqtS�O<9�ǐa4�#�#s_��`脏Ë��Sn�ڗqzn��o@. -B��v�l�����e�E��3���=�i��E���Mn�A��S.v<Xd�!�D���^��+��M��^���;�V�1Ð`@::�y0��Ϙ�lY���;8�=�4Bz?v�7F�9�p�#f{S� -yo2�H_I���[�Y3��T��� -�;��$�,D҆�c����-���uzBp{�i�9��"g��*vL��_f�? �AP�v�?�#ݝ���! ?}�N�*�B�i��.z$�u2#j�m���*��13E$�3%��\Gt^xv���)�?J��g`�d�T�>����`��13��n�
��% �$�Cz+eY�*�a�z�����5">�o��G�T�|��!�tɈ�[�F�qCg�c��ͅUi��|��b��k���U�;�_O��옼-/��2:6��:_W!��P�]K,ɕ�]s�����A��&�?3������L��{��=���3������1�/Q��\oϪ�"���,��l��II��
-�g�e��xTa�.ʁ��G�ٹ�_��8����{BC�RTs��~OBN0�� �7��c%�↞�FP~��Th�-#93 3� -+�5dĬH>Č�nY�|q6�i����wY�Ћ�"�G$C�j -Sߌ?�ӝ�p�D�T�PeIM�6!����0���B����]1���>�Q�.�iR!�ȫ����8[���`��ҿ&S{���l �1am���� k^�c��>�:\����}�v�u��>��QL쳘:���� ��L^�����:���p3j:VTn]�5M�s|]�~���vy��qu�C�ֵ���,���a:����^' ���W�2Ǣn���`��6�9�2O"�7� �x6�.ɞ-�w*�"���vq�5M�K�Fl�xS�� "�|'�s��e.��$1y4���g�N��~�F"��D�X��eQ1���7dd`J�H-vBd -�VR��r�1(�"*.d8��K�MS-��h-��(@����|XN�<�Jq/����X�^j�/�yP?H�N\HA��܂P^1�܆Ŏ�@�,�Γe��=�^��y�kBO ��'�b��>a�I��7e�M�'�WéB�"�}�Bʶ�i[��o9$��;4oM�V:�D#��y�¹N��m�ӊ��kU6��{o��#���Kk����v3��UoՎ����-\�~*ė�<��5��@�����O��eJēo����Æ�/W������`<V*S{��Nfy�Ӿ�kV(ٗ��<��2��| ,����� �>J�;=9ò�2����F�~ed$0PL*ƻ'���|��I�E͏���?��p_��i�*�R����H�����kx\ID�U�B����!7��t엁:v -{��ԱYd��g��tQ2O��e:A���1�c�&�KM�Q!�;L���燥m2�j0"��c�9"DG��@i���@�zr1a"�TEG0�R�O����k�w��e -kԂ'e�|����|J�GϹO\���_����[���5��k�XX��aӁɋ��t+P{*�H[N�6r�*+u���Z��ph��וE֎����PqU�]vU&�H���g-u�h��� �-���Xwr,ȅ�c{B1r��'�[F��H��T�6��J�U])�H�M�G���`D�͐Y����YW�6�B�Vo$\���c���2��`2�=IZ��=�9c^ݾ�/$�H,S� �(��`�Y�rn�y��+*��|U��}�8�%Y� �6�r?Yx�Kv��-�B�c�\8o��Wu�':]��P!��ݐ��'> -G���J\�����h��9uz��^�,.K�ސ�����e�"{����b9;�e%4�-9���@�Y��Z[^fI��� �Ժ>�h5K]<�Ȃ�o9AyL����3C���e�2˸%@�(�釄b�H1�~����f�J.ʢ����H������D[v�Ʋ���z��ׄ'����������xT~�"�%G6�I�ؚ�p���]i���R���V �o�T��آ���#���d���Ժ��`����[q�f��:��n=��VL����}��4�ѫ]]""W�����ˤ����swV�z���/r�9��6~�\���wE��QU^��C.���.dv�+ZJ�=�b��|9a��;m��$��7�^,�N�Ar��Q�������ջrh���v�ޫX -�'+����w�� -��;�<���SpG.�e���jf���9��#�?\�M����+��̇�k��?�c9�& }���}|md7�s��+����y]�����tv�MX]� �R�ʂZd�-���*N*��S���DG�>ڍG����e��xE��9]e�;[�/!��G��?������>�������T�Z�M�WBoNA9IR��I�E �bG�z�U�yS�Z��cs�\���W�����k�1�����l -/i ��Ǒ?u_��w�Wq�\�WX �t�}��3���k�OG}���3z?��;�/�����r�Xt|N��8�P�cU -�,���;�P��{q�4P���^՛�v'ݷ�798��͟�O1،��.���̕�ج�;�����@�?;#�w�F�s���#/��F�����J�"n �"g���i�>K?�_�G�7'�G]mN��� � ��0;l6�,J��t�^��lG�W5m�\�s�"N?�q�����>�sU�}t̥?������u���#�"v ;ar�P;cd����զ�;������������������e?E����Q�9Ƥb���<d�F�;� ���^��Xj�e���_a��A�|z���F\��G�O�[7*�x��'�ŝl�3o�X��' -k�#(�|�yRڑ�k:y������HE^!w���Cx(�HE/,;=Q����� -�lo�4b��A�z�=at����s ���"�j�W�S?���:e�])������gD{�\ȵ���1ȸt-�{�q������1� -i.��?�������w��l�w��<������є9|��J�uѡ��Pɂ���+����9� ���g��+��Y��&�pV���'��3ă����.�ǣ #�|%�����t�@dX�B�JG�+X3�v*��7.��� �HmT�����:!�� �|"���q*���JP�ڔ��(�p����^ļ�x��z+�8�]�����Ց�����%������#ٍ�Fsa$[ic15����˨H����>�*�}"P -��0��� �莊:Z�\��J�/����� ����q�x�sy����4���y�h���M�Z^&��z���U��8�}�1)���Q��T�Mnw���g�[CK��?n��\Y�O3Ct+Κb�̊o8H�[�ѻ�]�M��g$�|����?�������gf�O��q��{l�wءeɗĺ��/��3�qIwVb���3��5�O9s��� �d�����0������K��4�w?AF%��E��j�~�,��[ ����2���EŞd�,�rk�F�{Y0C|Vv[����G\ܦ��hZV��r�*�k��<v�y��-�N:XX�ĵ�W��q�/��iT��VI���h���,�վ��~|t`??|\h�_ �]�;.ֺwLb������<o�w�Ykg���n������p�z��i�����|}|��#�y �����k�ӣ�@��zON���w��]:���Z[1�`>�R1���(A�����A�3��.` ���Hk�b��CWr��c�*�>�� �l��R��e$>s�����y�ĂT�s�{�"�!���b).j��8��>BæHaǗ.O2�]Lew�7hu�"[�78=yM@9���u�� -v~RA�%y�� ��>.=&�Kq�{���xw�M"�ZO������ԋY��'�=��W�Q�/�9� �;�l"#���"���k�^2/�=�VJ�C[��/��d��O��-�r�致c��+t�W�/���3���h� �ɖ �} �֒G���8G�ja[��r�~+��-,v��`g��G�9�:��q���tj���oN��0<:El��:z�����@��c�Y�?M}������ϙ�6G����s���Y@�����j~�G�����|r=,��}�u�lZ���O���?�;6���R��]��/�N�J[�QB�V�_/v�8!I�D�|�#%Xl�ʅ�N�ۆ�L=�C����/> Z�^'R�����Z�J��߁(_�Z2q<3���=��_yf*WKh VA���%�e�y��:���2 �*��r��{$_�kB{ϛ)�� -o�w��]�D�ec���Mӈ���b�B���S��Vx�OV\xw^���iE �{_�ܶ���9�]v�DJD�;)e�uٞq]�N���N��R I�_���L�������{No� �ԌCa����<}5����>,�$��0U ��䮍���N��U�@�K!gq��da�%{��HY� &�������ܮ]�VD��[\53��gG�gD6L���Di�ʘ��)���4c�H -{�U��D���jZ���i�JJ��t�F�����3D՚� .q�.�Mju�<˚�t��"���_�w��Yd`Ғ1b%�)��lQU�D�~�{>���:Y<&l���NvR�9e�䄄i���A�϶�"]���L�q&u��͒Th����Vg��K��j$����v4D6����x�Lʾ�>d��߹i�Z�s!�军{<�_l����v���� i��Ac���5���!S�/��U<�_*a����~�f_�9��"gt������!4�*�c�z��J���]�?���ID<Gv�Bb�P������ƴ��/��*F0���K ��)(A��B(�ŷ�:�ޠ�E~e-&��b`P�w�-�]�Қݱt�"3�wj�$X�e��7�.���|�����6`u�5�ӷ����2s���9��\�m6I���z4`�Y�<�+��r�Jmc���ԇeK��C��`(�`��jX�3�܃:�]_>U�X�S�O�~�Ia6��t�#��Qq]#s�k*,�-�,���s��Ȩ�st�رi�ьf�=�օ�Uz��PP��i1z��G�ӵz���t�aJ8���]�*��0��{L�ؽ�. -��r`�P"�Jd�K�l�G3zze� >`'-"�O�'�Tk�2M��rl+4k���1���"�6;�acG�櫅��}�7T�U[�p�6����ǭdZ�<.�j��0��V2�+�5���K�\N������~���@A��[O-r�==�?������S*On[� ЩG���D��8�Lm�Rh)e�i�K����H���� ��p���\��\fL��ia��=��#���_����R).f�.:����0_�PgҒ9�� -�G�nꋓ~g���R��>th$�B8�40�� �Z��������<���Ѩ?���j�����5�'�W�j�{G��x�0Y�_��6Z����� @ٞh����4���$ �qˠYV{��ӭgWK�� � �TŠ�O���S��OT��^fc%F��,"��N�QK��],�{F;8�������~?���\I���b��XJˢ���rVA5)�C�#�{�qׁ��fc&�Om�����z�/�LVV��� �:��:P\�nn��OW�`P�)���B�'�N���)�cJ�P�G�̻�[�M�����$-lq�h��2��� -r�?#DŽ I=8����ܚSX�� �v�! (�7��T������;n�����#����2����Ʌ� �O+�"m[���U3Z��;����$7���x����E�����ɪ�"�.�p��f���쮝x�<oA`@�RyH����@ �mc�������=�s�w<[h8�C���sJ�Qj���¤�:�)��`��I%;���i#4k�sE�3��)4͡.�������(�6���Pg�şQ1R�(�w;��'n2j��S� �q>�}}�>�a�t��6Jy��;�A���N�����0ʿ - �a~�)��a2�&h����| `�+424D)��h��H�M��xVkb �ǡd�Œ�QC4�@�{Օ詁�c�~�w��¢�(+����|M]̠�h�ډ�98��*L����c��7,wm3�8¡7��E8��%��G+�>�>��9�X]�0BЪٸhi�����Q��Gw�����s�����#<�~]Pv-�8H���?�A�!�.���w!�q?!��8D��ʰѣ�DMET���Ss��j-C��.w���WЩ�Q��\���>"w�1l��K�����rL��I?%�73�ݜ�rc�9jj��HL��#N�C�Эp���&�N�0܅Hk�W;�˃ɠ7|D�C�*Z�!�"����_�AV��*��{i����A��Cw��4����_�����Z� - �zf�$AoW��Ն-���t�P���"�����9>���* � r���j�J��Q�ܷ`E���S�r(�@T���a�i���g/\�&�Y�cb>nv�}�t� -���JMT���G���aٳ�چ,\�� -dG��qvD��ɉ����X�NQ�p�) $������]r,�&�ᅢ����Hac ���]��g7��@v�����7�X�.t�#�]-���^�9'�o��ݒ{��ƙ�o�'����~}�����?�{�������||�:~}����W��3�����W�:��RH��f0GT������(�Q��q��d�F�G�&e��۶G�}-mh >�%�?�+9�Og�����h���4�O��?��?�5̌��*�;v�b-ьs=ᣞ�XM��V�`t]�4'�����y���;U���bt1����te��C���%�O��0��.��� -��[�O�'e�7V�ђz�<=m nb�Hb��R�� AJ2���{C�..��{�[��)9�����)s4"���'kϽ�2w�'���z6�*�ȷi�3 �y�܀¥����OWōq��(P�QgR� �Ũ�y�<mɯ"O����֕#q��lO���W2���H��a����5��Q�Vs`���,�r<H��H�!R `D߇�A�c�<P�C���@�D�^.X82P�����<6�H��u#�?�3�7<7�AR���=kw"=ҽ���c�'�����.���y�Iw�����T����<��K��������ugO�3��# ���|�x�n�{F��zN� -��Jf�9���mN hIM��N�hHv�@����5>+�-�a%�]61F9�N�V>!�%�&2 -CM�H$nЉ2�Y=�SH�Pc -L,B����O���6�r��<��BlJ�kqv��7��.��L�S�?F��G�~�� ��/��2�ǁ����/ǧ*�3�z�*���-{ $�Y�\p0�9����p��Q��8�I_��~8�\���"��$9�&�+�h�x�������rS�H�u���E �B�P��ۜ"..�s��O����6 - -��?��ZƬR4Q+ �3�Ǟ��*09�&��-�%��N攭dic�L��F� �e�i>>U7�rh��8f 2�y���� -f���e������-�) m�N��r�na�������<F��b��'�Q�y:TF yL瑐�ztē��@;��'��{�}�=Ń�\��\d��UN�j�p2_'���K:�uU�g����Q��4�O}����x��$�X&���!4pLL��B�ܐ���E[6O� ��L�9"�Z���^�3�������|���QpҦn�T��S&�D9kl0���76P+���1��� �I��F�TZ�u>,+�4N�t���S0ѕ�CL(�$�YM��͐��#���֊��\�I.#��q���5����5RI��F�Q��z�������G���{�q�������3�Q!�3����/�d.��7�1a� ����W�Z������-��`'�7`������7����9�:e��&�OvM�q�fw - ;��5 �4�� 3`�8��烥�*�hz��]P�x���S+���<��8�[��0%��f�J��9���w,&����^/�ԓ��?�r���kſ���������Ð�`��� K��f�Ct�}s���#��ɏ�;X?ëw�=c�����d��G�m-��;2�7��G�x3EV9,���lW���Gk���=?����R���� ��.M�� �ߞ\2= s@�\87���s��d�V -�Ӧ����c�J����)O��"��F'a���ux��<h^Vz%��Src9���caA9��AYA9��aIA9���#�H�}GYn(߮39d�C�Đ���3C���m�r�����0�3�7�����O�`~���'�f��z��|x!T��� -i��f>���?)��1��1)#�wl�ǔ�$}T,�ڢ�:���#�����5�U�j0�g&�>7� �E�t�Mkr�l�^^��0�3�w��6�Y��.��r7�Y��9���48,���`1����tX�1#Pwc^�[c���@7��o��6L������ztD�/;�����Qn�惋r�0d�Z�CN����ٗ����Kq.lA�88T���r�S�+��߸7��S4��������I��B��5���k��(�ʣ -��}�� dwɠ� �cB�0�sl�����3z^+$Q��������Z2�"54`9� j��o���� J��Nz�Fh4xdi�e����T�`��j#���X-��h9P��/.�%��a����r�%��9�2�.�$P��JE�F�<�[X�e��F�����5������A�x�_�Z3�3F��3�Rip8��D�f��d��� ���㇋SrSCƉ��5}�Ε -���- ����B}������<�?��ڈ�X��P����f��R��땒��AwSq(��QA(t��0 ���ٝ��N����O�:�f��$���v,���N�����G^���cz�q����w�Xt]��� Q](����D�6����T��P:(#�:�~C.>c(��4������Ҵ�z�ܹ[ro�h�Y�&a�?�q��m�����Ѿ������o?�|��0Gx����W��3�����W�:/R�ۿ�vˡ4 �^�Jr��>��m�U6#�,�B儆���@u�����;�����N��4�O}���9���@���9 ~���*����@�tpQ!�5�19 3�wl.�\pB/�S��@[�6 Hs������H��2�F�4�e�`٬�Q���̒�/"���_,�tQ��@��.�C��Ҷ��}��̢`����r(ѣ��H;��xΠ�O�p�A$�7��Ӎ嬘�B0�P^��6�����hV����,��Eh� ��0��>�4��ɉ0�߸ac~f�oIS}�F��'�_YP�&�E7~�=�dM :�^ILȠ3�Ä:ìL�{mS� d�Ɛ�wv���>����^��,:���^>���_��}j ��k��������v� -�c~"����4�g���Ԓ�ɲy������E�h�����9��Q{kI�?�^��è��i�������eR�1�AK�ݦ����R�qM����䁒�|J�b��,6HP}erA��I��zAAo-��t�v�y��7,PH̉�&���yq1ؓJ���t(VDV������t��G�9����Po\���I�?)���3�4\NM��<�p:96I��*gv"�mx�G���{vY�_�θ���a��4�O}����u�?�w�̏*��ZOIV!�cj��T�d����${�\ޱ��H����lk�jF����7o4�Y�c��$N>1jXU(�3�v˷K���Ya�"��R���b)�jh1���Q.,x����tG�T��+?��b�E�[ֹt�[���c���D]�:�� '�Xğu���s T���6H�+���~^����x��9 � �o�}�d�|��/=��?c�d�Ծ7��}�4@����N�`�-qL D��г��G��(>`����B!suT@�� ��iw,� -衽D�\ń"f��z�c���u6$p��n���A��t�W�y��6�N�:��O<Q��2�y96�P�Ѡ�Y��� w�i2z��=��Uܞyq˅�#R���wLY1|��L�*� zÁ�����������Ŏ�Njs�ښ H�ν��/�B���"@#�\2��i��c��4���m(��ڴM.O"r*|��MG�9��C��[��=g�Yd����͂"��;����O��a9E@����u�4�j�o�1*smZ��W�c�T�9p������J:��v���1��썛�������4�=����6q1��0+_��C9�a� ���E����T��mpL�w�����W�Z#�� -u��b���(pꅚ��_��|7�D��$�Mj��F�B����Z�`��*�)`g2nb -41�v�Q��!/�g[TE���!-�Ë=�u��Tи�AG��ď�߾x�����W?�Dܻ��/���iui"��{g����v5�I��&�;2�z"��M��HF]އ�AN�$"���]*+3MV�+>�i�����;���rr�O?35T����y��-��}��Ĺr��8���?�n7,�{�\���E��}zI�$��3�W�a�x����`+�oAID����+!���Z`��e6V��b��f���X����rŹ�h�r�9����=���ٝ�`�� d�?�W�ޱ�3�$s��,�/y���|��~ɭܗ���v���u &}ʭ���+r��.a>��0KkC��S��&�W�=�|��B��O��Ὗ^��������%B�=��,�6��d��q�y]�E�?���RD���n�%�'N��>��~���C�`=�\��2v+1/·'���PY�sʮV!K�`�K -�y1��(��|4�<�C�{�Z��̈r��fhX���Ze�R�����{i����p��0��������3<{<^�o�3{3���P)>���F���_�I^��&����� ��G���^�}㬨��[N����'�|����K -X��_��@ý/Y���y�X,��vpI�qr�~�V�y�Y1 -�ZW��(�ļ��l'��ݿe��Z�#�b��%r�`(��P�� jsN���&@E����y���]�U�~��7�gO?����)�GK��zm{8)pV�P��n;+ߦ��e -����������� K���K��GqJh���1=( -;��p!�V5LDʡ*4�8�3�b��Q�L6W1be_����?�Ƃ�T<ۇ�ه�?''�q�1 ��}�O�J��U�n"Nc�N�+�zC�dzrkoh?�}�{K���lQ��x��D{������״��d�L�tJI���o�����_a:���m�h��K��@��-Jd��م�؛���O���7�2蝑�y������!%wr�3`}B�M��2�"X����O����ƹ�����27���mw������},I�F�B*���_��d?."�f���}�E�?��@�<����w�4�h2)��'�;\�f C[4cȁ���[�g5����p��B�����=��d�)�Q����Q̊,j@'���\4b��3��>h��j�!�����0����F����j���L�y�����ioW�Q==z;����C��zB1/UH j��a�^5���<��K��d �1��-��d`�?w]��9�w�ȦL��)��Bf� �J,�ոw��`�������b� -2����X���0��� ��E��ϘKB����N���g�[�cX��yK����ٓ���HG�r>����<�����<EI�6��Ч<Z�3ND4�8ɢ�lp�s5<�9��'�ж�"�G�B�T�$�|��fnP����̙�(�=<C�)�-44շ�5M��@퓶`J�p��az��`V��v9e��,HT]��6̔K/�t�.����s�^��]C�� �b*���Q��!�?%��X1��iIah��0ω�НC��Q=J8�8 O�4o� --��k��{��i�����7!���J2q6�l� �7iM�H7�g�v�2���7�y�vM���f{�9�;��)�k�h�B��S��N9c���WNaĮ�A�Wd�)"Y�x�RL���u�Q�/�N��4�O}�Ӑ�?��~���Te� y��"S�>���i� �$��0�K�����`&1]#̔i�=�'t�N��X*R���s�E���*5����Y0�2V�E|W�g�3�J����I$z���B���y��鈺<��D�b�#��J�X�7��Q�y.��0���ֽ�ŋQI��k��8�](������`��c"���8Wd)�R��~w<��v�� ���#p��������yV�(�/ޕc�hx�&�%����Q��Ӱ�k������I���X�0�5���C]cB�pZ��K�lZ *�2��)��4�`4+�H��.�Ad���0p���'�8v�3��3�\�Nda��|`�N�b�*.$gg<L�����Q����M��&=����ýkɁ��� y�b�gB�ug�Y��8��S+*��{��I)�A�7T�C�r��5 ������*�B�a ����R�?���_��Q���__��?��y���Ŕ���B�jւ�~�h�d��1ѾF�站I��v�,@(�KH�AG?��� �''���ꮆc4BgfXb��+ϵ���t�S�K��|4�9�@P@���FO��݊�����M�x����f�y`Yu�%��Qo�x�o�Q�ma��կI��� |��?U�q7�s�7�������������fF�'����* -���c����J��jf�C�g�������=� �0��N��'�F�?��?8 �{�8�M:�z�Dn�/4����-Z6�aoAg�� ��"��r����6g���M1�z��r�G�Gs<� ]g���.�"oKUFrd�4������B�.Hr�ݸK��g4l� E�X�����4Tt<�����C��\�B;��p���6��Р,'�m�%��P��?Z4�튰�� ��2KU�k���]ᘖ��g�Y���7ġNg�͢ٿ;"Z�?��ٳ�����dԒ!Yx3b��^��d�s"�K��h�a��~^h�]�ˡ@ƽ�N9���S���g�%��p �N*�ʡ6f��6�����Г���D�?���&�K��<���l�x�'����A���� ��D��3�2�y�w����M&¶YͮJw$��F �7S8�p�1>4������^G}�!)�������G36��J'��M bR��#���M -�Pc��p�~�¾���eI��]m�E����'=V��E"������p.�?u݅ ��,�[�OTS(1��#S��=l��}� -���1�gr��xR�s�h -uKq¯��Y�H�I�L)��X�I�kk�r�W�_�f���x�t�$���qI�t!+U 阁/:�����x(�P�M�Q0jF E*�B��C��O���^_��u���t� ��0�?|E�Oa�<C����y��"�f��ϘJ&���$D��3y����$���(�l2�� gP8�Ӄ-E����0�q���@��Ѥ��0����HG�oO$ފ*⯾P���EY0;�nI0;�^�9�ȴ$րȽl��.Bϡ~&��v�?�w���q����h0n�?4����?~Z�*\A쯺�vw�-���'��o�|v& �ɩ{xۯ�Ƿ|q�"��CMrLlG����+q}�:��œ����ɾ%0�d��籅��ve���Ǫ]EY���b��H��/��Q��Y�ț��=D��(��u�?3m�Т�"�D.E)itK��+�=���3�#wP�-��Bq.]����d��R$�\��!�o4���!�Q�,6d2�ĆL&��[�C�B2l,��R3�#v�Z�������G2����A��M��������x������Z�z��H�0Հ} F����sA�?���Q�'H�uR7Z|a���?w]��9�$w��vL��)8�� ��M(x�Tb�p9���|���ű�K�� ��U�c��gf�=���^�� �W{���_��Q�s#�H7�. E�П�pMaB{�.א-�7/�%I(������Ox�W?�3<'��`M�f�;tW��^�H��"��c�����9ym��bD���ĨÃ�vC`��\�]=�����@K%m���� ������ ч�#�0��K�ƅo�y�ѥ�?������L���2���P�&O�Bo��]Vlon�ˣ��X�ڕ�������XA��b+�+�{|X�����B� x��91lX�{k���n����>!��/���U�_���e�n��Q�4bx��W�M��Ŝ��=D�H/�Mg [g��ըi�16�ĂC�ㆻ,O"�q#�1�D-�!����7�/�.+��ff���;�S\�5���^�KXO� �C�=� �H��D�2�Y/K�&��N�V#��� G�@�P,+L�s��F�;�'�~P6����s�DIEyY�� T2*I������(߮`c�'����<��F<9%7�������W�ȴ��V��t����w�ܬ�VBa�������u���t��Z�/!r�;�H�3ѕ����բc�ζ���¨�s8��'�����i@�C��z�t,Y�G�{gH06�3k(�z��������� "¿ULj�D)�bH<�t�k~ֶ�av F�>��ڼLA�|��16���o�r�NC]������iZ��w�ݞ�*_T��}V�-��'���G�I�e9~��a�8��ҷ����s��)�1���">�M�����a��cp��T�igq�I�`^�;�I���L��Z��vXT�ϓ�&���Ԗ�9 -��!Y�-������9ש]��؇�W �b][��;$�z�����[Q�_]�+��=uC������������!S�C����|���z"�p��\�� -OB �?��Yx�����} -��� -��P�����Z���/=�W12^>�V1+��:Y�2eo,��7-��v!�;=<t!�y��@�+ڈ�^�6���`�g3� ��1�s��Ď���§��@)�ܾ� -}qS���̞~� ��Om�f'�q�]�m�=C�ǁ����ʷ�:��)�'��b���C��^��U*�+?�j1�P�y ��߰��3*4�Dw�R#���V�m�t3�VdN�"��������t�0�H�Skyy*��>�4ė��?�nl�e�J1ꞏ��y�{�?�~0U���,�{��x�b3ݻ�g�t�Ke҈W�TZ$��m�Nʘ�l+:������0uW��ddˉ�+h;~i��T;��d�V���'��~p�j!���N<Zi')�Ŭ$P�ި$���E\�n��b0yn�S6���T�4���mXsQU����I+S��#�(�+�R�?;�Q��s4�O��ԗ���_�u�Pg�>�B��� -ٟ�f/B9T�c�DP|��2�}�&�L�Jb��t��^�B�C�$O��e�?�F�~W���#�t�d>�Ɓ�?�0��oר�+Oz�ef�1���(IpY��N��$@f�A�������RkksGe͢�ѣnh������;c/��Ն�NІ�"��I�2��x�N����a�F���{�!�d�J%B�6"πj���浼㡮Ti�B�,9�Q9~0"*u.��ژ:~6 -K(n)q -����n�]U��P��\������+d��j�·�Wxx�v���2E[�=�������bG?@���E�8Y�Z@�%:vw��ߣ]�t�-�[�Є�x�Š�ГB�W��E����N�(��Xu'��ȋ�K�������EuеP'��M�+� �� -:�OPG��~��t����A��O��4E��0�qM`�Q���~��R�����bX7�x��uC�̴�x�f�۳��=���������d�ڜ�n@ș�K��=�m�'Ƶ�[��9Z��{�Z,���]�� =���Ɏj+Sm�����z��3Hd������P�[lD����{w���� ��`>��_w���r�T�� ��bEV�7��"�߰����5��bF������e��(/V�P�����;��yu��k� -���.p �p�U9'm�cr�F���\�)S����!��v�G�a���ڟ����e>�;5>E�z��s���7�dmͳS�H5����F�JT��:i -)���ĝ�6��~��ׁ��ҀX��;Fi��UTy1M":,r�ŗ[��K��Q�E%/����㧐M4��ł[qׁ�Ձ�S�f?�z���,v�ۮh)u��p�O�����a1�{7�v5�k�D�2��1��q�MV&�[a�;�ۖ7�c����-��˩�����}t�!O�s�M�[RH"*(U���KW G�a.55�Z+8*�%�|����X���=sכg�)���/�k�Á���g��Az����%s�"r�\��|���R_1�G��7/��^J��-�O�o]~�DK����'(�E��|���i�JzE��a�5=�i���\�P�.��E̙DP9AYke]��?��K���������q���l���I��W���X�f0�Ja5�_ -�v���%�4_����c����ϡ^"C %4T~ϑ{y�1R7��M�,O#NT�yf=?�|��bԿN�٩�:d�vRhQ�S�:l���ݲd��v�1�|���nb�s�ϵ���������������w��� ������H=~�p��v�v��~Dk���n����}��خ;�i� �.�=6�ik���o�ar�Q����.��j�$H��͂�l67�W7�j�ޯ�;��f�?�M'�>�xŏ�Έ��];�h�t����w�i#�sg�ʩU���Qm6Z*�����7��ao�E۳o����c��,� �zvn�[��� -[h����3t�3z�ȵ����c�-4�����<?�5q�8���[��=�\���S%��t�2��a�\D�=c�O��E��U9�k�W.��?ҏJ������04������?a[�U��X��;�����^�8 y�}���x��4�_�@���)H
A��|[���}�|�ꐢ��,���O�x���E�&� -i����7��<�TF�*lTK'+]$\���ĵ�P�hȅ�p`����-�j|B(r>�8�������7���Fg�������`*�sZkỲ64��S�zG#ye�T�S����2"]��Y��9�f��\�*.����f6�c�����<[{.Ʒ�� �UX�q}��ꭐ���9A��i�h֖T�UA8��@Oظ���������Ϯ���Dl�ŏ�bv봧���t���7��3ĝ��~��x���!xZ#wo���O�R�\ �T��j�@�R��a������8|�3�6���5� -}�Uཚ�3� -��<��UfP%f�C����"�R:P�:L2�6lh�JW��U�5 -�ƚ�Ɛ�3�]�O���4�=�R�C͕CB�V����R�JlZ���J0Ω�2~-4��� -�!]����)��-v�<����`���]��u�������x�g�B�u/��찯�VO�gv��}\�8���N�kbۃ(�B{D���;��x4�w�c�lg�9���9�vs�ҽV?rK͘Z3���|*��^�>�K?�����{WS�b�������u�d�K���m�?\�l�r�o�{���3s�:e��Wӝ�=�$� _j}�Б��r���e��A��xk�^�u�y���6>yn��͉&�̗��B����3���b�����o�_ -�?�9�W������Ozc������Ixy�������d����W��W�����u�����Qy-~��Kz�ch�?}B{��(�`�C���X�gf�� #'9�s�d�����d��xN�p��?�$]0�Hԯ��|��s6�P������� -���l{K�z�D��V� ;>@)��9*}9���|z�z��ӹ�1�swF}�`B[Xa�_t���������f�7 Εo��� ��]LC��v0ߡ��\��v -B���� Q���fsoy��#���@���W.@L���ڐ6��9cϨ�`_}8sӾvQ}�#L�����~Y�O���+y���A�z��= -mv�jp �%�hЉ=�\����?�����TM{��0�x��n��#�"���,�5:=��c��l���O�&?� �W���z��m���k�e|��pA!S;�����v&��a�ca����/7x�q<s����&w�����l�H�芳7��`�������I��w-@��{n��e��92@�n4�y֓�P�O�[V����G�#�)z,�Ѕ��Gy�sP9�u�y��y��M�Z֗;y��d_�?r��gN�)����v�̀x���l �M&�Ig�]�qa���fՄ��+����l�\�s���B�����⣽�W��Sl������l��G~���P����+�o��s6@(�q���7�)���:Ф��B�� M�&ew��mφv+�!g��>P��r��|����1�z���- [��0U�m�unV��ؐ�<Xk�F�u>�-~S���m �P����sl��c��~��j2!�>��q���l猛f������7Ί�7_��%�4�k��>'��O�i��=� .���q��7�G�-c酣0���ŏ�ƙ�F��+�p�X�z;"�@PaNm���j�XШ��5O]���h�� �RZ�7�����/oވ��7�u{{'k�4�ĕ���%��v� ���#��mϒ�h��a� ; -%-vÐ{��lcZ����/�M�I�����i��aso����L�: �I�f�j�ҳ�pf��!;�$o�(��](�����D�t �W����9#O$)��w��9���W��Jw�@���Q �T/[�.�V6ٿ�y�W�l�:bbϒ��<啹�Oэ)�YC�Ж���9�6�jx"�9��,�%��imX�^Z'�|��f��ۜ�� ��W�Z��<Cl8Cm�{P�A��@��X���n��Y��([�:�������@�;l���x�H�b�1mN�2����O��0�cၬ��3?%A��ua+�\9x��g<�P<Z��\��r�p���(�?�5�?٫L��6&����n�U�l�>�����\��$^�c}�7C˷��C�w\�3��#T��MϾ��հ�k���yf��u+r_���el]PE��-.�JXW������+�˳m+��-QE��B!]��A,�jp��� �ח� -���F�e����K�h-����~����Rd1uX"Q1�7nLN��h>J�|_�]v��[�$V 1ϊ�b����iI��B�x�TH���yB�5I�%���R\Z4�Q��I,@�y����/�d?I1O#[��3;��0�o������G�8��ە:�I���'ϯ�#Vm���kame���ki�����x� -T3)��y��F��D.�Ģ�JU��4 -���\��\��\��\��\��\��\��\��\��\��\��\��\��\��\��\��\��\��\��\�U����e�� \ No newline at end of file
Modified: branches/xml-class-rework/thirdparty/uffi/doc/ref_aggregate.xml =================================================================== --- branches/xml-class-rework/thirdparty/uffi/doc/ref_aggregate.xml 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/doc/ref_aggregate.xml 2006-10-22 16:42:37 UTC (rev 2025) @@ -209,13 +209,15 @@ <refsect1> <title>Description</title> <para> - Accesses a slot value from a structure. + Accesses a slot value from a structure. This is generalized + and can be used with <function>setf</function>. </para> </refsect1> <refsect1> <title>Examples</title> <screen> (get-slot-value foo-ptr 'foo-structure 'field-name) +(setf (get-slot-value foo-ptr 'foo-structure 'field-name) 10) </screen> </refsect1> <refsect1> @@ -375,7 +377,7 @@ <refsynopsisdiv> <title>Syntax</title> <synopsis> - <function>deref-array</function> <replaceable>array type positon</replaceable> => <returnvalue>value</returnvalue> + <function>deref-array</function> <replaceable>array type position</replaceable> => <returnvalue>value</returnvalue> </synopsis> </refsynopsisdiv> <refsect1>
Modified: branches/xml-class-rework/thirdparty/uffi/doc/ref_declare.xml =================================================================== --- branches/xml-class-rework/thirdparty/uffi/doc/ref_declare.xml 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/doc/ref_declare.xml 2006-10-22 16:42:37 UTC (rev 2025) @@ -44,7 +44,7 @@ <varlistentry> <term><parameter>type</parameter></term> <listitem> - <para>A form that is evaluated that specifies the &uffi; type. + <para>A form that specifies the &uffi; type. It is not evaluated. </para> </listitem> </varlistentry>
Modified: branches/xml-class-rework/thirdparty/uffi/doc/ref_func_libr.xml =================================================================== --- branches/xml-class-rework/thirdparty/uffi/doc/ref_func_libr.xml 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/doc/ref_func_libr.xml 2006-10-22 16:42:37 UTC (rev 2025) @@ -103,7 +103,10 @@ <listitem> <para>A string or pathname specifying the library location in the filesystem. At least one implementation (&lw;) can not -accept a logical pathname. +accept a logical pathname. If this parameter denotes a pathname without a +directory component then most of the supported Lisp implementations will be +able to find the library themselves if it is located in one of the standard +locations as defined by the underlying operating system. </para> </listitem> </varlistentry>
Modified: branches/xml-class-rework/thirdparty/uffi/doc/ref_object.xml =================================================================== --- branches/xml-class-rework/thirdparty/uffi/doc/ref_object.xml 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/doc/ref_object.xml 2006-10-22 16:42:37 UTC (rev 2025) @@ -668,6 +668,13 @@ <title>Arguments and Values</title> <variablelist> <varlistentry> + <term><parameter>binding-name</parameter></term> + <listitem> + <para>A symbol which will be bound to the casted object. + </para> + </listitem> + </varlistentry> + <varlistentry> <term><parameter>ptr</parameter></term> <listitem> <para>A pointer to a foreign object. @@ -693,12 +700,9 @@ <refsect1> <title>Description</title> <para> - Executes BODY with POINTER cast to be a pointer to type TYPE. If - BINDING-NAME is provided the cast pointer will be bound to this - name during the execution of BODY. If BINDING-NAME is not provided - POINTER must be a name bound to the pointer which should be - cast. This name will be bound to the cast pointer during the - execution of BODY. + Executes BODY with POINTER cast to be a pointer to type TYPE. + BINDING-NAME is will be bound to this value during the execution of + BODY.
This is a no-op in AllegroCL but will wrap BODY in a LET form if BINDING-NAME is provided.
Modified: branches/xml-class-rework/thirdparty/uffi/doc/ref_string.xml =================================================================== --- branches/xml-class-rework/thirdparty/uffi/doc/ref_string.xml 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/doc/ref_string.xml 2006-10-22 16:42:37 UTC (rev 2025) @@ -52,7 +52,9 @@ (result-code (c-gethostname name 256)) (hostname (when (zerop result-code) (uffi:convert-from-foreign-string name)))) - (uffi:free-foreign-object name) + ;; UFFI does not yet provide a universal way to free + ;; memory allocated by C's malloc. At this point, a program + ;; needs to call C's free function to free such memory. (unless (zerop result-code) (error "gethostname() failed.")))) </screen>
Modified: branches/xml-class-rework/thirdparty/uffi/doc/uffi.pdf =================================================================== --- branches/xml-class-rework/thirdparty/uffi/doc/uffi.pdf 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/doc/uffi.pdf 2006-10-22 16:42:37 UTC (rev 2025) @@ -5,10 +5,10 @@ /Producer (FOP 0.20.5) >> endobj 5 0 obj -<< /Length 190 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 201 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gaqcn4V*,u'LhcqMEBhUo<jf<YI3&>Y(EEMsqht@Y3"bDuEANSaIB@=U)8^;]&0aV[0D6@Y@o>3i0Z4)MTJ1iB1&t1P?-rae:7E1X&Rb8&g6M;FrC6%(/e!qVF.CSIi6uP0V2E=6OS3NXG+2X=('n8&(6X5Q!p;[Rg*K^g@"_cb"IX'Pu&"K-/idJ~> +GaqdX]*cD?&;B(lTAl),iOH@5G$De=MG72'Yq]!?$6qt2q-EJV_Gi>/s/i"t<YjDPpBIl;OsFK],W_VAdjSmtNX!d%$GJd<iKP@`C7F7B\4aN'o`*!Hd`C527G^=cu>#!0$EmK_'.Pqq^YH!<Kd&3bW6*^_c]c9kmt5c=$QVU6<Rh(R]Z8]_8CuImRsaYGQS>T2*q~> endstream endobj 6 0 obj @@ -20,10 +20,10 @@
endobj 7 0 obj -<< /Length 971 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 965 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gau0B95iQ=%)1n+kh#rrlA'1'fW"8(U0G6"kACCQ*>D^tKK<!X.ESl&5P^F49'p"L'EJ8u&jMPO7*:k\i-^-,O!"MgCuBkRhucdTI,G5NoK_Dq?kE)U?%AOp&!P,[.JO(ppY%.QHgNtj#`cqMfB8aLL`e5nVdL>e#oo"8+.QT>BMS7t&b)i'2H1\Z*c&Qe"o:L8PZ8i'[<-EoNI9%u@8eA-(@_B9KFH!<?Z$$!k/qp5#*Ei2_"3/OrX4_M"d,ih7\-AD@i0nkPJgrB6lNu;)j#/ZW/.(VUDP39qE*m04CB/H3/V".--i*$5tpD[/<,f+8IJ".A&6Ae2M*DI/./9/Qa$Y)%gE1kl/C\Z&IU'7jV;ln&.Fa.S5<p8KtpC48afB2gKLHbqogtZ<%:23.n+9TY4\:mgTo`tSS]D*\JmWnfkNg?Z>D+X'B(u4EKmWJ!TC@0]<=F_f]kj9BDHD6!*0=Eh9t7*gL3p`*JSOG@lko/P+!<FZeFX_&Nd-7K+EC*1upJKAm;$p=:o=cI>G169hQu!bo&C9WTDu;gaKc9)so/JW=9X:3nO;\e\3cX%97JE0lH%k[`3pYk(Ho3P#^r@XO#eGVZQ1Y0o2L;UN%J;;o:-"Y$#FVI7jL;3_!a42$$p`::QQBFbb-,=UfL^`9M4ZXhIB/gf2ZN-*<6^(oZ!YP\&r+\(fd-A9D]>Tg0-<Drf>dHnHRj6fS0W0)L[Y#LbIToP5*59Sn\5,_`Hn]XlYB4RT?f)c;\`a49XA<Orf&-OVJs\lkTf@Ir*L2_=8i2]DS,KDq1ZjbA[@q-$Ah^^QQ6q*/R?W-@sld7eMY)pmMjV_%##=3J3#@XmN;@cl</k+D::[G#7CSDN;WdSfR^Q!*Vo?4a^i@J,T.;+Jfnh9e:8h3OnS%O%1hXBJh:kIf<JMqi=C/fjk-51c7L1o,&\DTYTFZm5pE%DE6'e&.0MIO4jar<)F'@o`~> +Gau0B9lo#B&A@ZcFA-9Z`S\\a;j*G?g8#gidrqVQ6.j%f@O*E0./ih(NJo,:9QS9/_s"58Dg.h\CL?1UMbsWT#Y#r/$p7>qI,Lur&,a4q*_<sf$j%O31[t"sEAY6i"i!>%??q6/YH:;7_^lb<4qDmi3MlsD"m81?_JGV7i8eK99"_!XJ`"DOWS69%V?g*poDpTOD+NYulf9+Uo`GkpN\R^oiss6d1+_$n^?25[9&oja`4eNgk6:&60/TOB6uH`Wp6H>(0FlQ+&l1e).un/XO\^rLae!\j^aO6ZSR^<5QNT"!'A$fUMJ#msPP>Ik"%k+87<*#mLg"3*M3QXj@(^rV33`Ef<,$'],bHf`&KqG70S_>U@rObfN@Ksee2_<.A2Ype;4lNrOpK1OGTj>/<Ma"UDHg_S,a5W'4EY/#XB<\#Q*tNq9?^Zh-]V.`3@&E]jQW.pO#@ttltjGe#p?dRd2aYi(&2T@n`H,_@0j27nSae5"nl@;-taXu2Una?K]q-E23QVF?gdO1(ZUs?WBMSE*'5u_fc"boeG(P`a;*_&1JCBr(B2<3YDA_&QnfW:dO!lUkp,NHERE-hZXZ*Z)7m1"cDWk?B$3Z%5/i-kqOQV+rZcQeSgNd?[R`o&f2ntr]+CO8V6X:ldO^l'Dih\DmCK?o"nh#P(^%#I!hi&r..)RnpUE=DYekJfLX#V!.mH5&_CU=G)RqESAlT(X@",'+9\;Qo0'aEWgsY]g:/1P[^K>$4**4VkH='g?99)V,6i=K%e<(Y:Igs&e7=Vacjr\mMg^u8J1&`_1/&r`fU3\Ej-d+>-1m@B"_3n-uBP>*n>-c\ZV;2gTE8kkP7[onB-ZrdueerP,n!LL?kH%o&<]GtKfIhq`rShqJdHX,L[,-5?>m[u-Lj:e[Q<)WeX49j5FHX;[#JW4TE1:c)ofX(CW*Oab`A*_g^'q18h$9,LL52At#8'F<d/~> endstream endobj 8 0 obj @@ -38,7 +38,7 @@ << /Length 71 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Garg^iGoCd.c`?]8EV`b1=.gR0K1`91K?+0ZOMGdU/Zh'Y!=Te%#&:?HH*JE!<E/X&V'~> +Garg^iGoCd.c`?]8EV`b1=.gR0K1l>1K?+0ZOMGdU/Zh'Y!=Te%#&:?HH*JE!<<-b&VU~> endstream endobj 10 0 obj @@ -50,10 +50,10 @@
endobj 11 0 obj -<< /Length 1935 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1932 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gb"/l95iQS'SZ;X'jS`aUiIN(/T%Bi>bk*JaP@P90_C00,E_8Q;NUhQE_&qbP"#L^e>=8l#)l=gN^uG0nBRR=#\UU:Nt#+_1[QgF>e01F@7+XrZb0'-a)M,d3R_C1L2ti]pcq_kMjW%dib#G*oYDF@^bgr[`Bt]=65_=[kmuZ*nk[k>E;[CX@FR94lQ!O63>RFqd,._S>_",X$6.*UdiZ6JO#l:M>4g%Fk19\QB&5Cf.j#V:YS8*o1BdZX/*mq>R?n_%t,TD&EqW"E3>:=X&&>o:OOIG>01>Q2H`uj%Xm%R&En6#Yj;q)Q^sU*q4,T:Ps;8L#j-%Jd"TqWol,2[*ZnG+AK`Rt`'_k@(<a6jLqJVqgo7A^?mHTcMEmh5V1[1Z7BDQi2knOE]KV#GLc>qOoSiY,X"&f>dU%F[XbC"mildTZ#,"4(d$`<j9aHQc31L^=X"pA!Zki=T/d/[H<+%=etlEnGC*>_lKqlni4U[>)(ub.T(YtZ<`H21TQU;:SHF$"_!H1P*qeg&=[MIDiPSP=fdod>AV+F'!<O8OZo0pWL3)s44r:1LDVncoAdAI/#osc]C02P7B'&SV+[<#S.#%$o"?J1s/-Wu]+5["nd,Y5/4lSFr*s;YYX>I<UES'[chA&qq`e&*^rU/]1,,tFZIu'p8jmIdbc4+:1FcqQdnH3bV)PH-e^@TEb[CodFfcp=%;38LD*_$+mU"jn_iU6,?IBb5uclg[GLL?=*nrU\R%K`1/*KKj/0TOu3U+F@^Q@6@!Z$t9!80:,fo5/Bh%GWln:\U(P]DG&Co2pJ!$Gd#W:`p>5ajejRmB]p@n5qi2fspmiChBe5DODUYkfM>N5JB;Z@A\Cpb^\Km3d%X3[8B#TesZ_W-O=h1eB(9i:Le(JRDpNFm&>k`[Gh=e-O=haeEKJ:f+/L1lGou3^t-sX`h=Oucrj5D#a&C)>f5flYNGFrngTmbV%NkU'Hkc!'CBtM]@I#gM`e>]@9,@jdo;2]Xt1:t`o1,%J^0.[:tYYbZ&im!4[d"f-n2q=$j[!i0.8o!1Km'NfVY=+Q!?3'HUnJL"?IYSgb(%i@D,?'2(n&\2.">pQ"WW16_?OJ"F=BgnEeT]&W8IsM_)&bXH2KPRtF#"1E\7P4-$IE#l'^L1mTorC+')j#/:3N#kYL&[i;LfNQe>f3pp"\HdU4'%K_3A6U0qW.n6t+S#a4!rD`.A#(]$d'nu'1?FY`ToD[(uJG.X(#>qh,2B)K;5TnE6OHq-']n8e/O#3HSM^5IDGC+V/gS43Dkme!k6Et9L:=.AWCsJi`2SMeKHSY3OcF7)ZUPiM-He&Fok?@j)9"og#]t0a,MR*1U;#T0/@08(>jUh6j=YalJNu^l3hYkp,3g%P_p1D!NZT?SgBsH,Ds6ctJO'7-%bU_JP`orsJ`/'e#=!PH#kV"5@<WejAp=eS?EU);gGGjYEROXm)14std"'MZDm;W#A<1&>QVZAgV>ein!!7`F6oNfii3\X6)QpeCr)nuJ%SD0K:'9:86(jDa*U@m$$]0J;7VTGIVg>1ZNcH-GFJbk1_="3EU#CEHh)8+]/",LueqhrN(ogNgd9I4gFRGrWeo$`rJ[]3U8`J1Rd>onH+OJ5mNdA<sLA9Q!.>kHlYWl(K0\Tb=pOE/b="J1:1nI9qp=EkN<=sR-jp*-SlqcR*<QR+r..G%YD''t1Kc8ND;e)];6[\5!ZaWFF8HRn@:V<UX259S3.4)cdi][tHe&J%]="oP%s&ecHS>_IOecPucha=SD(e>*QOW6?8(^)"M^0knp(be"gf#?BCDsmB?s*R7qN6lGDqYX&lXYH'i&l5h5bM`q9`$Hri)'0Y^=7nA"G'lCB_AgbT;SH68$8&9g/[ouPDSJlL>A;oE+Ym&7lSoa2u7p=XRFUf^g&oD`:;K5#H>Dli&^?"*UmU5l~> +Gb"/l?'!]/(kqGS'u%mAJpP0/ELGX)V6//mD+JTF?9$fXE<A*>)kuEFa($pq!!CYMh)2E,/$0jVCi"rL4>ZHrbOouLdk1/^32)HnSW/"M)\LD7reMB=M=1U64GgW<V@2jr(XqI*>[D\c)MXGX&FR4[B3Pmbb+b1j?!V`*Hdc>j>ml_gc!Hi%S%TH7T*TZu+X-)nqbG79P3O&D?[q3r8V=kbJO#l:M$/CLFh[CQ*?Sd"mpec#T6?^'t#O[=)"4lKf1h$%"0<B&Eqo*E3:qNFeABlJ-ORQC8I5-eW-B@B^!><JO&Bka)-TfhKH&coQ-nP<H53d5VRZiJY"kBG7U>?mdYb6>aDCUg-!U'BsF2OKe2LWc^h)u"-A&cNjY7=$!?N&[Pf'Y@Wu37C*:2TK!JgoSEJ[kZ%s%dGBB0Y,,=bo#m:>%)@EZTF7UVSe)OH31Q<bYB-[U!eR\NNuS9(4fU##c;L\Kr8&0eIf!`ni12>RPq3\rOnDNL<n<gO@-mps\cg`s6gS."i,S2qgIm@9.D0$11nWmo^.iQ?2aF%r6L+j=bXuceRa5QBb*t=k=>L)2/qf6(!4=#3Dt7Z=V,X)[23];."9MjE*Oc)ZjUZ9YrQpQ,=LZ7`*'OW2H<P+Jk2X1@&\K]\m",D1C%pACs2_S8+9*LN8lkg&p8"pE6*J^9<c&n6A"Wi`Xm?4X]4'0AXtLFDd*Ut2s%a>++:)r?MnbhH`+X2'N8ZVkeRmJ8#&1ULo#_hQU8aC*a6Cb)c]qhpe]XVF#c/)$B!dek[_EPD7G-%<oiL_dXQIJbB0>S+1FRUJcHJj"?JlVEuIC#1K@lFW:&b`>^p%f1Xc>j71]as+HrMenI2ba=S@:-SSH1(FhY:"_krCo+fbnN4VKU-_;#,,)Jp!]dUqoG-\]>+f>VJ4Y&:"_;/]h_JQWHFgYg;X'm!&!<SfD)>OZLr-^)H<ikHTEV_+]j/#d?L'f'MF!ouiJTIB6`PPrZYSScqAXS]a;EGXD(e:.t"M-!:7cEd!`?N#Zc]H+\Tre;p'+bFkfMM:q=`fB2Z>Dt.C:.e4nZW]=#^"]sW:.0Z^ktNlZ6!*=Z6$35q+A)B+[[>8#R#HYCN,'CQlllS=I+509@[k')/e.3JM)J3&aT-3[<QEl-DbsjK%AF/0+Qr5TnF';nY7j`Fs(g?5_R7]o..!@g@QMVr8`cPSGE)Oj$h1q-?qS=UbF`%Qhgai.Z+22XgW]2s@^;H3:Q6]>fJq":,.A">Y/]Nd&k&b)n%BH'p"er/i9Y9tN/%A%2UB4cre$aU&kgRE_._%\3rK#R#]RO,UC#9b_;TKe1""or!4L1Q"LF#]t*o;)WJcPA"@#*NT+-*1)#]C2tE0X[&Nm+X:ZETSNq*CUcqHN0F-ce[=W'9FQ@I+;!c:o)X',LiTej/?i$+dGRM*!eHrc,M_N.b,ig/?4tu?(2&s01e+56\ZQn#W/3#h(;YUM;@II=8ArH/e*P!#7q/_8D/>-S5.bOQ0MR!TB3TMT[]%[Bo$O[#]phm[-eF6O>u$0P(]uFK[OHZ!7M8>ppS+E9Cq+A7aY)G"i[O>3/1b4Q9qY&)A]%A53C5\o]^%F[p"6.!D=?Bi<W.oV7<U#]t6s;*B-DBLoqph9OVD>Alkk*<`qV1-XXqGpOZ931YKhh"u9MhBm2$K!HL1k`Hn.h(aG!.j(.E`EK9f4B(@YX=[]A.143*+OE^$fNf[HN9n`t/o;1FkmIQ`#8scgW"DpWkJl4^juc--?kDO)P-KuKog:t#/OfTA%3".pfKc*B8]E[D(!JWuYWuT2)SM!#X8rAc5]X_I5)_hkA:@m)!ndSckRiL4^7.;KepX].C4e''TViU..Dl*I*W8(j]kl1uiBnb8_W*6F%4UPd7_b"eVn6jUpk1ZbB3]u_F@(d2JdDrL(Wb5,B7:*P7ep$~> endstream endobj 12 0 obj @@ -653,10 +653,10 @@
endobj 120 0 obj -<< /Length 506 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 536 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gb"/i9i$Bq(ru)mMOr%8!*f:$**ne?Aeto&0ck9a9+rig2N?VN(9g2Z)IjsG52l(ml20H>DkEnbbWAQ[+um@d.m/c6*^SG+"Hh%8,8(2+6J4N5R9d"J3V#OTj0SBN2g\QhAdBCd\5mfr?7T__RH_SACtl*(#RG)n$5p1ki]4S=g%h<82BH;doY-TE?h?+_3p+i>EsDaJqL,P<7_M,6fQfngj]fKuC8lC10AG=_\b1o+l88PB!PQl:-f]N5&uXnZkqP>V,+3`d5X7RV.@%QG+6GY&NaQr[+2dS/)BR`ZHW1ZIMfn=%0Qh+/^ND9V[4D)cT/,![*9-dkIF46Q2.0XmM(2%r[`KV!DGH`=<%2h]sDPYL`Qg-k[t[[V)FQ"Mcl?GdrZB@Pjta9%0Qh+TBOh)7.4)fRJ5(AWT`2:0G8?C>/l;3M$i^g>@c%-6@f4ORu5++9qNj,C"&n0A1dID%_uMD<:PCJd(eqnL17]c=t)jd2n('?3$!?l%/~> +Gb"/i5u3+e(l%MWMOr%8J@24*E-+sCR9_Z5`H]2#/0n=AC`<>e/RZ[I-5ql2pk?nTYIp]n]J"XAo>I'9*"hOGP[k7n>DF?&%tY'E`ILdG"=SO\!*;X2ao@\VETk2C;%e`<VN>R*`r/cPubFPUJ+IW91IYG!W`=]7?fNZgn1<&P[*j0Ds@?Mf'aQG\QNQdj's-h]lkM@T\n'&2OG4'_DWp%1>THC=il&lgnK)k^GM>jNdVF'5X:*R(;kS2,4"DC=$qG6+r^>"J:N/6Ecu]om&#[W,.,WZD,,#793(H/U.DmLHlBfT)@-W49:6G&InfFJB$OQTXA"DrSN)O]h/]ls:e-a0:gM-3dOP#R"XW0l14S>h!!*-!5_(OsS<J1OfPV3#hXh6!Wr4)`3arTcY^TOMR'D>>n3LsZ.BEf"SA=b9.GM)UcM;Aa7b:Ip.#NSbRnV-CT8Z&S4dLd%!GR68"T4X./\0G'f%F'&7!=N<`6']eF",)pA%/fY>6ju+'d[W"ao&3Yrk'k'uYDH3Niu!,2~> endstream endobj 121 0 obj @@ -733,7 +733,7 @@ 133 0 obj << /Type /Annot /Subtype /Link -/Rect [ 144.0 664.0 209.83 654.0 ] +/Rect [ 144.0 664.0 210.93 654.0 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A 134 0 R @@ -761,10 +761,10 @@
endobj 139 0 obj -<< /Length 565 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 566 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat$u9i%iE']&@2]$uF^'M<qYM3I-q'3ps7W1@.i#m8hGd@Y=^Ao*AYj"kLt:[bh9LO4C&,_%^4asaEm*&TKC;4A,]\rWL>_^T%pN>X<FZUZZMNuB8[E/jjkk.rb[6rN4.G\7N.NW<Q'PHnLcbta[BFH[H`h-@JrTV4RS3CE20[Xksm,IDcNJ7Nl?rFC-lR(V=&6NX`%]P*YWg8(62Q$sb79o9PAoiHq_43MKZC$5l\gFLX.W)7G`K#upZj0&`**heVCaQ+Y!;`AH4cj)3't.#PaF,Xu<-_g.U9<fsQ;b2>N*R-OPRNm]'o2`R'iNYNegh5jPAZ,X)r=TP`j"9=)^A[e!1[[MU948##:k<6#ci[s)M41k?Sl+P?A^;K`GW4CUZnYVgcp!IO"CRhe;``!^#;FN%)s&V;^(O"s6A!*CjUi]'TNgGX.T]s4_iIZiq8jKqsGbC8ec&&"O)DTiAQ8`B-5[7c!S4'K/Uq,R=Ac"-L\rRq4R8`#bWCK@j=";cm>kL?%Z+IP><'<XSD/fJM^TUX5>rI;i8>"eSKCV#e!Dg<dDu~> +Gat$u9lHOU&A@ZcHqY#iq(N#UOh+G;8gJG7H>pN,ee/A?2Oj^DcGFI8P:C:b`Uc314ruMoDj,+OK&hmAF[92rUngX=P2_gj.]4`SF[J0i8:)W.2-+WODmjAOnL.X99Q.8K=i]^bKg1ON+Q(rP1kPs)].p3SrP!">DO"K3Y*ff)*8<K9\p@5X9@Fi-r,/$VW;A]qI^$fn@jP]iE85Eh.PlS:*eBt+!06%]24n=t,IC_><<,#j52s!>!%ZCW>1S1gn)`A@/IKFT=n/BA%?4,Gc>o(/?<N;cAC"Y=;]u[1b+iZ[-*'#-ni@9XM(2ZW:tBGB1etV$qgNqC6PmZ.+C'kMSH<buTnp/A1E<Ir[NM+^2uTds'4(6Y%*Wm!J<1DFeM$kJJXV??KDg\Gl[NF?rsOe"<>AH`YtN!>>7<5\0^SHSO3$oD=`:q!>n>Lps5G6O299@2<gVjr_!*^38N6oUfPq$7r+H?\ot0njnVgO$tlkphu;X8]hNsZn(+4J<T64cCcSD<1-eh0R,#/T8)3%^T71^ZSmo-ei9jn.^Q@OrrQ'q2g>~> endstream endobj 140 0 obj @@ -779,7 +779,7 @@ << /Length 1955 /Filter [ /ASCII85Decode /FlateDecode ]
stream -GatlQ?#SIUn3+NQDbC+d(%n]B/abB98D=PmciWMS(n%gh8>8RFp<m<_P=UP+/]HsTk_461I34Mo]O"mV^%!*r5Y9rsX3H@aCbN$Q_M=]76`q(K.>i`0=V]5SQcgDK)CjT'='clA1i_!c\uRDhj9>\lS`Mq0Aea=3NM&6$l?m3eB+rjLEU\j7.S*.7E'%';M>U(i?*[VHQ==$?'L#V,[0S;%2o@%7Y,V0k_9FJAlPP6/R'1PRb!m7O0ftI6mlHVcp^5;fn(8_DVi.$RMYkBo8[K"=t\4GMI]LnCZs:787QHD^'Bqh8_Ql-]"VWBQ.(>N%?YNLG$,.AfauX1NSoLgqoF[TeVYu);=of.dp;/-QIV7T)Qq]8X.5F/<pHl-))!Jdj=rT43I;H.0Nt7C=V*oc`L\GW\H_M="`MTWfgH+@&;?^uc<p<F4G/#G85\YcM\N6D;UC7&'n/Yf%1p3(BX?`7%<&a1Qmo5FEiY>9cN[ZKT.-;l1PIp\fo`gRTZpd0B\g9^:67[g=DJ$O`-.*[+$4s>L9eJmu(g%7=h)`_JcrWChn"&BhNU.#L%%'bHj[Nf=<m\f"cui7^fD%QZ2H.^-S4:6OE1!g6+9LIpNt(S!lsg6$riq+Ipe(lke@\X+crkQ&XW2dc)[B1C-Yg]OWkac>;)Jgoip[FMAOPp^b8.s/'jVpRg_$CGs.VC$(Y=^$85#"I6_m20J@bMj:VqhBa.O0^T8.%e@Z)0T]*cV`7m+Wdi!^71/S,B4c)+6-anb>_dDBEZJBNY+$Xu@j+8C!Z:NII\JJPq-@nqcI*&gVQ5bEpE`TO+JZGM+'IYhucY%Y@[QF@9A8s4571c3lADL1:o[3_$s!A(:A-0a`>:bt^X-q8m$j%jpaXnA[[2-KSD5`\jSH"bGE"K8h!bSIYmI6G7QK@Ah7CH_b`YkRf5Q`f25SOojp+Ao,@?"/Cipa35Fpg8[53Z50J;mDYQ6-:s5>N=rAZ4#m$rY>h)\0oaU<9cs^'DBi>[o9h#ED?NZP[X"K\8UNMrcs0^1c&l,7AMDYu3FZB^2E9Pna)lTE@n>AD!o0''>h2fd[3PPnYn0PTCfJF+7mCk_ARcT5*K2]'``&&fVDFph7<K+&11RaXbk<oF(F(#jia2>lag(/u@lK;(>-ti3m<JaLK'M@#$./NKJedRj<<n0-Q3"nnSMRL%_[8><@CW$"F(UWaLME,a>GX,9l2*3PM+n&Rb0Q9Vo>-@F?XGrL"N<'\Rf/E4'^LeX]BTe+jYtIEJWN"7n*p^[uV&<Dcta3A`6*TH@>fg,G53CB]u&*mE#d_logRaApjK,F_s/r>oNC(Q"th&keGnI(CqUfiLJ.u/NRk@A?$7>&"A'=dP1=;.D>ZK?j6oblgN>In`h6"p7+MZ!]I0nS'EL5Ir4H\VnD'[S_fqLkp=Ha8BY3C^)nORMJ"5aWbD4E[M/Q<3N;(QUjtOUT]0iLXV183UIs.F+du*Tr1WTu6"FPm[qi<bad[&Eiq*itfs8n/S"Yn+fI#!gnAkeN=C1Aqqm`%U@n.lT8G;<IbPCH-_t`PXD+<=lA0VP<GUKC75+EHYnd,N_4eme=I6NB@+8F56qtq!k$+"=U6q/lpqRgsSWJY)E0mAI\c9-4X]>jb2ImJc39#*l]2TG59=dd1.`4Thc"n2=B"^&F"k4+RG['$)*W>S]FH.b&@':FNIjWE0sfe$(i"DVV4YTAHCX9QXmI52'W(;ukqUjB.HpbgKu>P:GqXJQAb._-^_%^.EUHI]6OI2cNjPTKC<6iuXn90n;D\lGAA8!7V*S3GL("8ecc@C2k^@;0+k4%SBq_sl?I@k`RhlS<4K;9b-1gRWo"Q+8[4%J<*WP3I1G3&-Bg2DfekGn=T4/,/t@=1@Aalg!JJq)U#D"Y`D4HeGN0;KN%a2A^jJ>d'0;Mur'9r\pD[BZ*4B.c0[9Mm^KQ!<g#4SH~> +Gatm<968iG&AJ$Cn5a0k7ehH)<&;?*@GjIng$"c%kn/Y(fLPFP#@iXh^&:8$]26\2T#oG_0p`6//Ga%>eI`V*'Y]_)E<Z*L$Pfn4NE0%EtY+T:7PoA%MNK[FoK%DDeRZTq8Tu9PD!JGS&N[L7r8$MfgrAao7i1oNUrLCpg)Ql8J8t4%9n;r&N<CKrju33U1T$WjEN<TK4I*ZA&NpkdO7pYM[cl+K@'9^kZg`g@Zm!:1TY`BQ\nP3g]c,eUs:b`/GeK,`H3ed)4,Qq\NN/PCWH-Oj)&%V.NiWr/%S=:X+VPBNg96\6P*;k#0_%(#N$qgTn,Y$Kf5W04B90'SjGd@]S<K6IEu8UN<]rp56H.?0CdEf9N$J@E.o>JsP_'q6,(SfN-qP@tAk.J!<oQ<g3,X&4)U.^9:eP#'AEo[,pjp,"-E=,%#!GY<+)'_0ur-,]cXIRar'bl3'AshpC'ge-rgffncJu=$e*B)KfAh%C=+Ai![Ouo.8*Bmf]tlE21d5]@a@!LHA(!E,`$>$nBZ+=>d0:,e1Ht9D%\2HQaVBOP7]mKOfIi1u>U9hXLirD'-s-@D"P03Ou5b$O[m-[_?(b`r#Ue(ekMe^u)LFD-6<j6XcNPE]">;(`<2Y[D7F^lWikBbF7/&2CoD6+f!V2@i0A-eMB#1Cg*XCP&(AQkla$E_2otbm9-\As"8CSEcVASA$H^3lSTCPmu'oK$&'m!oLco\Z/\j]T<h2cL["MRI]Qq1%><LA5*(,fu"NB?-T$SQk.qQd<5=gZc:?!+#RBhjJ)lsSdkRZ21*?)Nqng_6V1,(d9=6uIL,TrbJ#M+aFj89>@]C$<KF>>l^H]LFi*s:7m$p5V?^Kch#jFma1uB^Si7TUn`D3p?L4rbB0bK!6dp'i#]raScBc?3AB76gZ7ZUjG/V(;[Gn+0N[)t<4s0n1(S+*3,AEmT=O'u17iW1q4(QWFY-#8UV.u\fhd/DO-^*Q3f/PY%^4Vt`Le?hj'[o%bZ4n'_,A]i-3hMNim)IDJH+*-^/P,rS+.=]QVE$Di>6aGcaq;R[gZ3<S*Qo1Oc(Su![K'B($WTjEe;!CObedP(BsVib4Sic'%N?p[n\p:s'0N&cAipa<>h&XY.PiCZ`+33gq?[J$.IM'1@uXd/S@EP?a.f^/CsNd+Yc+]`1]bV29(K)JEV7=Z[2$Jcqb@;s_.JCbFc0Ykqjbd(%%s&#T'asoS.("&Gc<7rXietbCDQu._d?c!56Al7jk)4T_4XGkh\ojG1%EZNU-8F74`ZGDh`a6:^#`g`Wksa+m/$^P@6b&Q1Xs*g_il<QG!8K1'@;3d?'c$aQXP=)j\kH-r0P%cg(?S)S-Z[+7!g)LYSZ9u#l2O:$s0#,TB@:;n.L$2niPZu]m>O:E)+slQ>>9"2k0C:rYiBY41nM^SQLqTo[@p1U4j>5mtVa=P:;-V.TV#&U'0<S5AKKUkq1<BC]q(mLaPGK1FOpTgh^Wqa8Io/',oHBU?58WAA;caRiCDgU>BJQr-,s`"k'Bn0eLNWk9*IH`,hjTbUL)2#h[tjnu[K_7eG@qMVr"M%)3]XEJn>'#8D4,+mej]]3gX[__^2^5##Pap('S:qUV44]MlWFq*<6pJ`eRcbZs;$n'mk%^YBY4FJtR&P3!Ib8YP=<N>Pj<H2>f8Hn_gB`B[?`9@!;E`UdgIe;`$ECJQ'59l$G6*EMO;4"^j57m&5MPA?)8C@9gfT/gG5["=[nrM"RFmm$iL3:\3fUg]2Altlpk1JX<79cr6^?+7,k7d6<H59A2Iauj\MTk_V,B0HH60%U&"r,]CA=@!P%8ioEC3,3iI>1s=(Cj=K$.ib<bcmOqB+3AYar<k(Cg=1&'=U!6^"1:^)]8JTfbkNo#dMJlJ:k#r49E5><U.Z7?H+5oTe5LY)&*KcKaDMMsJ@PO)[^BdJnqA!ZbD(6np^7mO#s5^BrIgG5~> endstream endobj 142 0 obj @@ -791,10 +791,10 @@
endobj 143 0 obj -<< /Length 1082 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1080 /Filter [ /ASCII85Decode /FlateDecode ]
stream -GasIg997gc&AJ$Cka2?Q<\I'cO"%ZU"t5Q5lDa0%Q=ubD74KSEL&:1'Od%hIZsG;rQl40/Rg4`Hh!TW</s<;*H'>VU?(.:,=d#5g/?*]T-?Y2C;rOMmP(,ZCPtX`G)-%cBs-!)6Z,K;#)Du$9Qt?(EW1"^V7HWsj1]<'j`pdoTr3d=Gi6P\F]SJ+XKGF2O1kMjr;?+.I%J6.Q1]B`+PVfReB$f-6&'W'^2W`^kZP!h/.QRGU07]5lg\T_UOmYqaKYBD[JJJYu'oIX4tU3NjcQphiM=PiC>+R$7fCNDu@8"@4E2Un,5Map??MEk)<B:#dX4<)GQ4(HPB1$I&]TBY,T[qIWH*o%g"U-o9iY.l"b55id9#kr@C)JR6PX96V?Acqp["gc9WH>54GI0pV9<XGM517tN,\Bk4S+;N@hoaM=>5D7oqTYPUPZ9=T&#?f]JfHr8qMTedKCu&5B$@:5ui1h'=^6%d[p2EOp!aXmuk-?Nf<7Gn[n'#@"pF%P%PO25`qrZ.#q's@K\J%r=CM+WdCf(;\>Jgf3ZrGXEHG![oJ3$B'kHd(a!*0ufhsQCG7lQ$N:uA(%14iE1BRp\DRk<T^t0YAe(_tdQk%>/]Xh,*ZT]$43U#EEY&n_iEDm+P@H5VJMl]2>$J]\q9[A;Q]EB\pKX2o29?Bg:2eX^:OpltYN>J2.eb3V6D(?D)U4B,TN>/Vg+Kp[>%Rgp?h?-5>En`39?%laTCP!VPO*:ei>:2;FAn+Zk4,@5$c_%$]7FrF1s15S^k.kOJVGg[8C##)WeFYH4Z.Z0'j6/-O)u2J`cCSkQeYTspoXA5D\M/J,=IO7f8c$r-M7!:RVdU;*EN=*p%bRG8\Ig4@$?JHT:)%5gh#`!_B/OXGRN-2,>=/n!XbRlunkS[)jifOmB_ib8\HDUN-N-Qil"oh$jng!<K$06moX["Z52WqFgc^D[[P5?q]BH6PP?bOPf[QH+8j1-P$M6*47Wc/eA_[4;mXD[TT3\pKR@0"+9;dN-1cb!<m68!f3h'r71"KoGQCl@fKki.6WH5>Qgf>^N*dTEd_T6_J9(+PHNd_$I$'t;~> +GasIgh/Ac:&:`#5_.+uI*oE&BG$:_;RaapqC"n7B-F"J*C7@WXYFiX]cRE^1V7JbVj*)S/qk;YiIZ1o^6XfBtou?_9S&"Xg?f5K=o"E7C:nB"?d<NFpSd"5-.SAd8pX^q0CYQc8I''8?B<r^#"DJpO/..>AE?t;82GAi9G8684^b!gt`EE&g=dGb+kBd$uq"XJIr6X',WG=gHLegZt're9Fhcj8MW*E:i\4D1B"Ie^UR4f5\X)]J:7Iql8'5a0Ve$$CcN]KbbiC6,=h">lt+;+/Xf;.Z,!f=<Qk`T%6ab:k63e>.ecn]u0=[mRObCrkkg9`6U&>nbe3Kn-i,a&+58IGANK%ZtKf?pTSeufKJA3+.42qV0>Unfk"JT@f)6iS`?B),@oF<^Z2/(%'++NfD,4:T?@!gkMfWTlt1^sMb,fl[=iYlMTM9^)@VR$rssSs^JL1r$897kP*]<RlY]MHfq1bEqnLG3T7"b!$Zc3!rKH\LH>Ob;b>U&A':TPEP;'pEo!)n1urb-f:V.C5a=t=B!CAVMM0j#t1X5L9AUcS;*4MXmFVQN&87&8mI$.nr@1-*;qB,A7HBF$4omhV$C^bYHJsHlcJUpZHS/4bT<7Z5%4^Vk[Df`A9D(>4L9"o\f6/iEJi0Jpr(E3-Pkbt8YC*V)6M#jOs;bLUR+'E7:3*9Yr#<O1gtWZ'DWrQ9\CA/HP2la,;,`LVaBPWrO@ImamAZV7%6;NZbb/Yu1ZZgLQ(+]eB_k%)b_FVTmJY,g2/5hQH2j7%p6bED!25*64==^XMqeCNL/uD,'Uri4<F[Gd7?JPP'm_bQEAU1XjnqBu4C.aL43?1&f(eJl,!uCP>CpM[fM"qJ,0dKmel-aL$"]qpedW*7Id$:F.L<fdDub8CPNXQ8_A(tJQeRe)7kg`Ck%S[oAY31:4nqVGQ_>YAAk]-[+P@De@'q:.jrC'VXL[<173F->!i#(*oq>fs0qT0P&(X$un!R<S&-@e4?kIH.WXi`IjcGbfa^$0'L)T::VQ:0AVHYJi'<;372fSsU/'l:M_*c#"AokX2P9I\l8)R%eirR9N2]!C@Wj4o~> endstream endobj 144 0 obj @@ -809,7 +809,7 @@ << /Length 2312 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gasar968lH%)2U?kZ2?9B(^W6Q=T8P3bd&$Ro@dg/9+a-oSO]5gg=Dd!(B_bNFS#^LlVZEJfshcIXSa&q(?XaOJQ[L*0++'F1Uo^=8mM@i\T2Cdu;7SiZ&m"n*;o4hG8NDiS=9$_Qq\9@cuHX[f"1mSVFdk7!l4$Id\UI^2X'k%_ol^/k^duc"bQA7Ec3>R.4J2f=^)0PY#h[CsM<'Bf4%cO4_,KoKt_nIju^kEC-6MtA9ulC+?"m`g)XZURDU`&ou2Omg9A5Bar2EHbq)YujN][nj'8n#SCj!Z&?ZkhL:_(T5M%5MZ:^Moj!<ir-[5rLi4gB`kPrJr_6$OlNum@cE4,.j0d,k'Q%-U#H/U<aq,8dNfR)a3Frb/m:$5mtWMK.M[Dlbp+lu1=7-7+q/QM!<Acs(-fMYF-'_U:Ab7JLutacg6l@(=3o'1=<_8AD0?X=';]JT)W#SRe'4VNY]pU9$DuLYgBR66)@W^fc:FZ]lFFj3/]]WT!(Jbd=:HCH"$u>HUR4c&%To='7maToB(i:,B]7[*1t6-2u@S$P;Orr"?,dPjBS$,H]I[#/[tiY:2ST:)FS3fFRqfdIRAF:+b([[B!IXD`Dh!OA,n'=A@ggV(@#iMQ%=FU`Ls7E==*f>4]0NWbG:os7ae,b]GHtY?6^]$9INF%>,hb?a*al[^k[g1V*UE"JaF+hq2eD-+:ot9`i0nJ+*`PBfkB3Tjp_@s3hGJnp?cPIk(%1C<oLUB?b@JK`@nJg-(JOLl<Mq'+#f;:FW4G@nVrMqMAfWi.#Ms_.(Z8l2;_)X\S;*WE&q?1MtYA&\Num_)0qGCVF0N2Zf/NAODYRf4"K!BXh;&`Ce598;93#<UUQ<*(_["u>!RgNp)?E,l9)3c%-\UGRFac3oeLn@ZTAZOWCnsLL$Gtg1Tu/`'K4UfOA(ts`nPM$DtcW`#&>XaHDr``_Ul=acuB)c].hI/2WnR/8HBsjD$Ie%Lk7++m!/XE,QVs"A1&IF[19[6G.gM]YUs4aJ\QEd&4LfGL+^7+S8g4VgFsN?fXeLQ/BolMnmM<(a@9d//096j5oFN":rD*E0WY,,F.8u`,@EX`/CW1?Y<,u-=XH:=:c^L--"\DFbW,q0X)]@=q`fK)2.KH%4t"Z-`mG/2%*^Q;gN>u;JS/j<hb-8HI8E;Ni#P=:d'+I[]s)dDR_Yk^mbB/88R\3nZkN6fGfB]o9)jp@>:<C:-2!qQC&fZZboK-+0'V!=`Z&Vc`&a/6"$1ede>j5ICV#9X^Uh=$\oAi/[T41k[S?:?,M`E@jR"iP_$"9Begm0phloOeX,ZY0T"%Hn?F-Tl',aUp[F;3TmOM<90*@$,sf7aNl7$0-7B#@2mW"hgsommqR1b3%rgP@<(oMn%$Jf'UA;f=l\s6%pWL8m7j`,BU<=pe:FRX3(`eht\QB!Pm]dEa%jXH"ckE1dgGMd5ZTJ[Z=_8r`Yl$%t;(j<q@X88Vbd,IDOo]B0!?f\G%J'[>KRr32?>LR.$-U!F6l:^MV7c>(#@JBuE9bN&jAPnm"HF;l;dT-/Y%a9R[TpP*jAR:F`MMLSNGjXapD9>qBEE/]2*2!&'iZWSDt_G6e8FK$Q[H=;h1NHFKIYcnB:n9=9c.7ncTMA3!d)fTNHC,iWQ7J-JCm_4;gF*2X4%o/-:0ZUqN?21p/SAcT6i$X;on-6soX:`/X-;j//_ch0\Peb=kkrdCuEX-]TD/39j?0t`mFTgE'$0e^HH4ETV.]Dnu_P(PSI_iABNP,IZY0p8AedmP'9C?pSQU.?^C+F0Y#0lgXaPIa;N#U4HL/aGo`J*UlILrgd.)1Z6^!t[l[XUUHP]f[*M%A5H8]j\a%_r*$<hp>]rR35>c,7i#pnN[J>/AjUQ^nL&U;e>$h&k'482If0[Lb2.4YC!!q8V7Y(U0])ol5^k`p,\cg.:M;B30%eql?UKA8KKlp3Wp;Rn:>*Ljli])eg>N!gj&X0VQ!r3+2P#f#On;n0O'M$($W)43XDml,A+0@>Sa[:L2*_M/mk4OJ0H`(nT0q!>aP=?2L0Qk$:.,_].>YD+)j.CKA0q&*0Gc=G9AHg!'EME,^f+?<*M4j5M["uXWZo_8G>MR,p5#'!Oll@NRe.&Ed^?WNpOeR&uIN-QbI=s:s&"STl4q=ndQVC08'>>LRL.$QE,mV!;pA['%t)ieqFF+L/1fN'$L"hb6Ed/:;QuQEC;\a-CVJ"^etnc`O7m=Y:^(W[o!p)F!L?aii$2o='sq$--NM<<$)7\V<uFV^n'N9T3&3,gOYM4"hWeq.d*hL*(a=as%3R@N;j!6GtHu~> +Gasar968lH%)2U?kZ2?9B(^W6Q=T8P3bd&$Ro@dg/9+a-oSO]5gg=Dd!(B_bNFS#^LlVZEJfshcIXSa&q(?XaOJQ[L*0++'F1Uo^=8mM@i\T2Cdu;7SiZ&m"n*;o4hG8NDiS=9$_Qq\9@cuHX[f"1mSVFdk7!l4$Id\UI^2X'k%_ol^/k^duc"bQA7Ec3>R.4J2f=^)0PY#h[CsM<'Bf4%cO4_,KoKt_nIju^kEC-6MtA9ulC+?"m`g)XZURDU`&ou2Omg9A5Bar2EHbq)YujN][nj'8n#SCj!Z&?ZkhL:_(T5M%5MZ:^Moj!<ir-[5rLi4gB`kPrJr_6$OlNum@cE4,.j0d,k'Q%-U#H/U<aq,8dNfR)a3Frb/m:$5mtWMK.M[Dlbp+lu1=7-7+q/QM!<Acs(-fMYF-'_U:Ab7JLutacg6l@(=3o'1=<_8AD0?X=';]JT)W#SRe'4VNY]pU9$DuLYgBR66)@W^fc:FZ]lFFj3/]]WT!(Jbd=:HCH"$u>HUR4c&%To='7maToB(i:,B]7[*1t6-2u@S$P;Orr"?,dPjBS$,H]I[#/[tiY:2ST:)FS3fFRqfdIRAF:+b([[B!IXD`Dh!OA,n'=A@ggV(@#iMQ%=FU`Ls7E==*f>4]0NWbG:os7ae,b]GHtY?6^]$9INF%>,hb?a*al[^k[g1V*UE"JaF+hq2eD-+:ot9`i0nJ+*`PBfkB3Tjp_@s3hGJnp?cPIk(%1C<oLUB?b@JK`@nJg-(JOLl<Mq'+#f;:FW4G@nVrMqMAfWi.#Ms_.(Z8l2;_)X\S;*WE&q?1MtYA&\Num_)0qGCVF0N2Zf/NAODYRf4"K!BXh;&`Ce598;93#<UUQ<*(_["u>!RgNp)?E,l9)3c%-\UGRFac3oeLn@ZTAZOWCnsLL$Gtg1Tu/`'K4UfOA(ts`nPM$DtcW`#&>XaHDr``_Ul=acuB)c].hI/2WnR/8HBsjD$Ie%Lk7++m!/XE,QVs"A1&IF[19[6G.gM]YUs4aJ\QEd&4LfGL+^7+S8g4VgFsN?fXeLQ/BolMnmM<(a@9d//096j5oFN":rD*E0WY,,F.8u`,@EX`/CW1?Y<,u-=XH:=:c^L--"\DFbW,q0X)]@=q`fK)2.KH%4t"Z-`mG/2%*^Q;gN>u;JS/j<hb-8HI8E;Ni#P=:d'+I[]s)dDR_Yk^mbB/88R\3nZkN6fGfB]o9)jp@>:<C:-2!qQC&fZZboK-+0'V!=`Z&Vc`&a/6"$1ede>j5ICV#9X^Uh=$\oAi/[T41k[S?:?,M`E@jR"iP_$"9Begm0phloOeX,ZY0T"%Hn?F-Tl',aUp[F;3TmOM<90*@$,sf7aNl7$0-7B#@2mW"hgsommqR1b3%rgP@<(oMn%$Jf'UA;f=l\s6%pWL8m7j`,BU<=pe:FRX3(`eht\QB!Pm]dEa%jXH"ckE1dgGMd5ZTJ[Z=_8r`Yl$%t;(j<q@X88Vbd,IDOo]B0!?f\G%J'[>KRr32?>LR.$-U!F6l:^MV7c>(#@JBuE9bN&jAPnm"HF;l;dT-/Y%a9R[TpP*jAR:F`MMLSNGjXapD9>qBEE/]2*2!&'iZWSDt_G6e8FK$Q[H=;h1NHFKIYcnB:n9=9c.7ncTMA3!d)fTNHC,iWQ7J-JCm_4;gF*2X4%o/-:0ZUqN?21p/SAcT6i$X;on-6soX:`/X-;j//_ch0\Peb=kkrdCuEX-]TD/39j?0t`mFTgE'$0e^HH4ETV.]Dnu_P(PSI_iABNP,IZY0p8AedmP'9C?pSQU.?^C+F0Y#0lgXaPIa;N#U4HL/aGo`J*UlILrgd.)1Z6^!t[l[XUUHP]f[*M%A5H8]j\a%_r*$<hp>]rR35>c,7i#pnN[J>/AjUQ^nL&U;e>$h&k'482If0[Lb2.4YC!!q8V7Y(U0])ol5^k`p,\cg.:M;B30%eql?UKA8KKlp3Wp;Rn:>*Ljli])eg>N!gj&X0VQ!r3+2P#f#On;n0O'M$($W)43XDml,A+0@>Sa[:L2*_M/mk4OJ0H`(nT0q!>aP=?2L0Qk$:.,_].>YD+)j.CKA0q&*0Gc=G9AHg!'EME,^f+?<*M4j5M["uXWZo_8G>MR,p5#'!Oll@NRe.&Ed^?WNpOeR&uIN-QbI=s:s&"STl4q=ndQVC08'>>LRL.$QE,mV!;pA['%t)ieqFF+L/1fN'$L"hb6Ed/:;QuQEC;\a-CVJ"^etnc`O7m=Y:^(W[o!p)F!L?aii$2o='sq$--NM<P,DTWH.@(LCZ*M.lHcN_L[@@KOb2D//!Y2+@?u:9s3i8M1]@o?mn*!~> endstream endobj 146 0 obj @@ -824,7 +824,7 @@ << /Length 365 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Garo>9i$Er&;KZOMVa"RCHj3h*]MK!#GVSanPGQ$@L=Lt'E>`L@2Eq*>UD7jpN`[-6fq\3V2.u8;5QL68rk.\Jg&.S@[(nr8<hZgg!BU_lft>INU?HF":.M>SFPtci8/Xpd7t/;-?bl(&>0i(h/>:[-Y^/2%+qmOmQt@<G#4IK/@FmqA(m]`E#NFthdJZgp!:Jl>8r0T2I\t>=DS[j1oc1VV8&L;:$s_[6$U$r9!GfaXi4Yi%'VCnDdq8E'po%]WeT&Y!d!dqm4aE`uuZ?Ki:`PecF4UPBRis6(T];Z-4FaUcX)d9F.+^5B^nsWOf7$d]p?QfFP*<r?28M7<gr+G'r%Q'lH+Zp/2!+N+6W;~> +Garo>92C6q&;BlVMXH-dCEJdrbF@_4L!bRE>Y`C@L=Lt'E>`LiEjGqB%-BGc?H.V6fq\3V2.u8;5QL68rk.\MBU![b:)HtOXR9XZ_.,If%!Iq)Va]k#S<$[f]1^F^qK,iUR_PS3d/J)#g`t%m^J^>P;HQ)#41"cGGVN]4/g;6[T]`SR.dI0S6FXuG?D=ZrJNA\2MU."N*$W<Q5BcFNTsp/l0kG&OF)pW&0<K`&hNHFC[m`H"72NELKH":!`S#HeZbM32Y0+^Is-/&3"1X3iH1sbe,e"SPBRj&6(TuCM9I29Ug&@/9F.+T5B^nsWOf7$d]p?QfFP*<r?28M7<gr+G)AHabYU+J^LgQ%hdU!eG~> endstream endobj 148 0 obj @@ -836,10 +836,10 @@
endobj 149 0 obj -<< /Length 463 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 462 /Filter [ /ASCII85Decode /FlateDecode ]
stream -GarVKb>,r/&A70VHn802r.pR/8.-D6;2#]ZLdPjb_'4kkS[=Wba*kb7--Be31:*2#lm.Xpmj/Q#bq_l]<Q%EGEPhXkM,9(%8Wo%[EMc:@-81!U=B'u+>&A"u7:&RbE,<='.[,:5?ZR\F,>"D%R3bAhHinPe@Ja\9KJP7g9O-q@6jUrU]J"4LKqb(G$4@,##>7Ie_7J-c5hE^T?t%WGY.u5kRT?Wb#rBbFM0GQI7Omchb;WGoErrVn@m^9i$dT!B._VM[2TYFgX:_iaR/XEVSeYo5s+h,*W#V^i`@]D!R0c#2hBcYKV#WX;@6_ELE%6nm)mfc'bHL<00b3C!jWN<SK?^YgX]c:e9.4$Zb3%<g5c04QuF?51q=0-d1CiC!.T`rD+=T;PTM%J#_^/rr2W[sSHQ@nmbq%lNsD"gX#WU.Ke_9O]JuFa_jkRIhCDBq-6n'rM!2f=[F~> +GarVKb>,r/&A70VHn802r.pR/8.-D6;2#]ZLdPjb_'4_gS[=Wba*kb7V93@^1:*2#lm.Xpmj/Q#bq_l]<Q%EGEPhXkM,9(%8Wo%[EMc95PF'*;/?6Q&SMlJ>,-N8A3&G#"Q-$2FY;m>^OX*]#b`[U$^';4#YkbUS_O22D-8'I0+p@";IOT4]Kqb(G$4@,c#>7IU_7J.^5hE[S?t&>$=(%.FD5V1JXd]q`h5lR;pZY!=S*<"f?3.VGhKR]i*(<!WXbEXQ[_j5hWOBi9S.3e)%R5AhT$Fu?ACA42\@ug>m2Rn)?oo(eH%Yca<C(=nfV`DK#\Meu)e2+f&37KS#70:h[G]j1(S!n2M(&FR#Dbuc^lC%nb8AO*(Ibadb=F%is%pA5nc*+hkGcsFKD_[_bG3D$/al'TSWq(iReb)-=[c-6,X3(l0pNPtQ`a=DmKo0*3'F'YNq#?4JBfG~> endstream endobj 150 0 obj @@ -851,10 +851,10 @@
endobj 151 0 obj -<< /Length 808 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 831 /Filter [ /ASCII85Decode /FlateDecode ]
stream -GatU29on!^&A@ZcHn/0R)h5lqNU;>)<OG^.mA9G_^gSIMKI3BurdC>u`==-r[Gp1#IPYo^1XC>KN]tYn5Q^di)30*K)^4./*s)`FAi&oo_uU+d)#P48X&r05:U'b5:^eJ]7^Wh5?mp"(f]pg6:'Uml0J!/CH_+M-l7bhPDE!ecIS/W[9s":>aq*&QIDU`\7<FPNU,S;C0P:I(4%L"f"!MI8ifk/Boo,'cM=RrY9F=]:g(Oki="oU',qQ#Fl>cioefA9='i506H^JEWA#tlg.Us#T)>H<JV+e>bNULV3/8O';YAoRNj?gBKqCeAd9>o=d;LXMTl/(.6=d89C975.S)]^7q-*a.IO?R:KL7@cZe2+K$>W(*9BtE3DQ;(<^;Kb4Dk\q+gUKkWiPi!F&^po8[u#O&c_#*N6Hk-.Eh,A+UKJuiOKkG_4mIEY7>E':7r)Lm.@-'7r!*(k;74tYj_cMQR(?-N/1?aW9kgP<Aco@tjPH=;.3U%:#0gISI+UNUe"I"(MDH*B7OhKBp,1mDGu9uR-o/F+DDcl]XcMRpeRUQ%<&VT1'Wc9b@CQ.Hb+OtOLLXcqKP>1\e_!^_Mab-i3609UY;5KSLGGoXpNag7^*tt(>;p#O)p)TL5"Ai5(:RE`l:mBOp,$@uE]Mq'M>h"El1<p!?QQ)6q%s]OXC3ldf]rp]?CqGN609U>]Qm,@e)[[Yjl;%$H#)i-Y2hk8gX-g7@:[^^0jI[GNR/;Xc!n+$rMi(2l;%_D?oa>1g,H'+K5gI*oWYtja=/C*kK^F$)bgE(fP%$qgd_2L^Xi::~> +GatU29lJc?%)(h*kdGRu3(]EHH+.m4JIYn8,2"Tl%]Ub_#3(]smah=5aWHB#33J/K\VN!_q+++R\QmHEgj"YM5UBT(1Q3Af"C^mHaJXQN#WPAkd5jQXk'&<&([*5MIl8^8#W<.sF8ukUD[8qNpIL4pl=a&^F+[Xm?@SMa..s]bV5$$#V;4skq'et"/@G2<\BM'T7ti0*IuK=^5iRgJ<tuM(&`QdGYLm>-LhIs4I9NV:,:48)&[KDa$:N7iRQD5"!uRm,'UCZ%>mPg/DiuU5*-gDNpgs!jSER=pRd'\E5G:5dr!G1Y'/-6^W3=]NT5a9':qj6I.!Mq,*mCKjZ[t2G1JRfiq1V9jHK"-oaTt9Z)N&2;0";++W"]Yi_iX=6Tit/*6%@1Cq+Yf`,MYe*1l'6p$Lo(p(_aM@M!?X&D3M^%].h:P%MuErS,Or<I,%:LP?*>KZc:*PqKrucE"IhBG22O0`m`J"7UdmY-f<MWOLH#@Ht7$9*Tt6;jqC-B/V1,6i%u^g+hT<:P'@&rM#I&k?O]:RaAFbP6C)83B+)RG#peR;T0i`$G5nI1Oj>FO0umf@WTqn3XK_hNSuKP!1\6G"?:H_4Jt)'P&FubRKiB>b$>+:7-!u$LM<#.ViLS75kmBFAU*S4K*OhkWtm%XmQMNFVO)E.OS"J25/)7b%mn8eUO[*]Na4kgC#lB$tH12mY+h&jE4h8+841&d!@t56ZABgDobQQ#+hWG6QPG]"OsT@H50LN<QtGa5D_C]PfY)&lh0UGqnJlqoBS=CZ"B!?WmE/_h9R_*ViF6D]X*(-$Z/;.(]K1'i(]%q%m+5qqM~> endstream endobj 152 0 obj @@ -866,10 +866,10 @@
endobj 153 0 obj -<< /Length 1188 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1190 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gau`T95g:b&AJ$CE(m:#^b5([;mhB1C/^Cfg)_q!p,7/8GrYB00+0a$Md[2lUFM/.YA`TnDh_]iD7I1QLc&`-Sqj^->oD@>ASO^+B5.^!\q+/3nI47JCb=FXhllGU\u-9+P&"oo>drB?Hq1dU:Bsd(CHo5rPJFerm^S;>+AXpjZbq8QP2]$S;h+N'UTKr=DK+?CS;I#m@j'U4n>0-DRLS0K4mf97XMUf>1cuJoduq"R2E5`9ZC8EHgq=roi#$$F<[WO=GS_)l>`ka#>eoY'k&N=gM7dfK.H>)I?4M2?1dDgDa0KO>g1e;C`1YT-p._7B-I926aQ>RD:L`+h/1-G=oTU/K=?&_=A$dQY-9na(4IB:5KDBjN%_VpLk)P)8dWPgD&KVpbeDIV,Clc&hU&8;ZsS&*L'];"gAJ8o,'s.4Y')N3$O*NpJcXOK+PUrA9Lsg7V:%Us:p[J#D`sj-671:i@Y$uZr@K[#BgCd&j>+EFE^<*t3E9TRP9ArDAl<:An"eoT[o:.G^:R2Y#pFmZUJR:I')'lHkk2l7SY]d]6r<=BU/IhMMn)@iUIZWY3GUH@e[CfBKa8ja*+sqLl:YMr@+D?`[?NO:"ASNQ:MH;N&>>1%,8F&h0-pr;6=)NZAD3P.KIXr@ElL:HaB:h4=jFI^2,JlQeJ7*a4IhEX`nZign?G1hQ;C?9]Mp!DWD;K879,cmq["iZF/]od+lYF*8lt^3lq@EZY:TCqL.ai9BpM9"\uq9LY43?m;8"rD(VBQNg;Rk&gBm;HBTf8nZL3KU[_+#Z!P<'=PB<:L`e=NJuTnfcdB#bb;`6=2qRlmgNCpg17Icd>T*G7iU0I+pR$Hd3ARIW$h#O&W]&g__e8,pH!S;C[!`/TaWW-,l"pCMdnRE_]!O+SU5&BW_@s%pi(A\52TE>sgTjWD<MHsr6EoWECDKu.BB+8f(AAUX+un^ARB=hLU:gh@R><aIDm)D\9#7AA[bnTf97&'q261cM==#ea?t37)U2'>KZUgb/jTP3k/-i[;mRhM08hY(C,Xg!<Q0T=,]D"7QBTDNV-0;XA^l9pSUnBGu`T@tn-V=\Kgd+Mf2lcMTGk"6:mF-1<',"s6cO?/S>r:`-#&NLEcgF01qVD+KeGAN8D-tnTNFl-$/R<d1h1ih"Nhtd`F(Z;oJ_RA6h/YR^?"*76._Q5~> +Gau`T966RV&AJ$CE(i;M6'?NMP"p)^FS_Af;qhBYfiE`ZbJP4tq]`8>Q#+Cc1t0QW7P+DChgW0gMsoZYbrr?$_@?WV`N,D:X_5^qg-9+V'%d]a/MD)00Q=.=CONto;R.mTfq)MSF6rek%4CeLX8&ooe[>)!MEaYE^T]lYZTK5[#b`=>Gu)UHUJJqD2tsJ/*8;(>:H4#]_/ljJ/]bJ(K%h5Q(^APkh0XjQ9qlPueB<a>FfoT7-[A):C1hHuV/9^)c'qB_VOOATd[HJeFoZHhbB%I91Y&][(`-ji29-Y^d#b(F=Is<%*O^#@#JHF@Lnp?[+r?\V=57M"P3Y#:H1=E9:IU[C__+M&P;Ta$Hgi$>i<RBjF+2$ur/rj(,ZHUcKSODGL!1jLDf!ZI?lI7UXR63S)K+XlUEs3Rs#c!kU]9LRqj^2E8aE875dgg:p07V#dZAFJ1_:6V]^"LGO(a3/-T$EWT[C[IPS^<p;0a1m:bYm%Lkq@PRZ:G^K`'RslM^aR1h,p"8=2j0:D?8aaQ/=/eCTh7IC2+^4gBBQW`TfE<L]_aNF`e0OW_Y?7`[Z*FG[$`:8J:0;Tpl@(lQgD^rF<]=d-g(edrG$fe^b9Fu9O;#'gM5&Og4[;2C>)RMk/:i2TVK\44ah`"P-]LaXqOHF*o,&>QgW?%@^Z>KF2XjXklHGEc`6O>rYs>qn0Mm.-rY($0U($Qi*n![;1S7RZLqSq7tSi;](]SN:^=LhN%ia`rG:0QXpRj`Pd9&m3c/#H6[^"-J1kZD(La`clh-iSgf03D@dm\3!We'*SuE<F%BO_\ofr(h+4-kS#VV;*X:%R_4Alf[s-mT,p1F1qjiTS"N$cZu=qUj%8&A4`Gk-!8<l6hmMa@$"2C3<HX$XILSk9s2I:X-U4mhERB_@XPRW.%!oI;fO:_5rm$b#/uohL8#qBB2(SI`P/3>P&Hrd6$^Qc1F$).5`3?!^b=YH;TPpsJ9tBUSLVZ7M:r1.Q(N9T%=IR#CY21Gs`C!EFJTb-l0\Z$ui;,2_P.RO^j@Ms07*#+E5,*<%WlG3_e/**qF]g=.`gUpOZ4uA/q2;*P>mF.H[M6Y!@l]H2Ns@#6iQPpkc21inc=8r*itW$5*qPNMqfqhHs8ApTfl-P##HDYnoId,NRXLa_`VN&B@?ZWH:*C5Tg#D`1Hf=]"+sL=l!<PSfpA~> endstream endobj 154 0 obj @@ -881,10 +881,10 @@
endobj 155 0 obj -<< /Length 960 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 975 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gasao995Pr&AI=/E2kfrENtL_kq1Y-V6-b_W^Z<Kl+nOg"td"[l#-KK%@FPS!)]Q5@qIjpI@c44K@S#GfRaMk<cD/$f$at0Nr20N,"HNs%KXYG<fgFuD]X-If%(onpa3,!"eF5EDa>6B5&(Q#ia@OE>#mbfes;:dX`.e)H@6a/qbi>W0?\FBb@3&)fgW=:Gb>*W"@M-90F@ulUn3A+"WS?\O85pFj#O7:l^O/(`_L:VM9dGOmYjBoN(f@,LSecQZq[(qi]eKV%.W/[3,;*uk#l[5*o\rj(iC@1MPjAsd]0"to769ie<@PBqu4U]g3#Cl]fI.EJ21_+5Fj-c%P9Rpf7)dMlF]NinSKY4F`qMP+(n5h2"V\A_(m4da#ZD,!t13:-C!3'X^*-KG!)b/!;?C;)o*/K[LNKd]\5`+W]ScG:%<t2SY7rSZ;i7!R1Be_41aup-\ch1Cu4Ge,nn)>@bjo1#])[K;E,*^91nR_<Sd0_Juto2@c]T1K)h!WaTq5S*VHY:*3`,=%(:RX>]Y=@@ELAa*[EFWJRI<F%4:2T0"A!)Y#@2:p%:(o:D^.<qGB_U'jfXIB?L>Zn^ghm&tkeEt6fA%=>$"PWHqV:T#'Qk55&@@#tO/F4j$ZD,f]W^R4s_]Os"ZZ0`D.](7@\2ZORn*(C=?"kY!F>b`-32R`^(q)'b??q^S@P5-S'un%AC*[_Q1KKKh4@36(hRqGA16o<6mJ8SaKE3;*::da;YP+ii:L3SV2QF5WjsZE<'"G6]g8Q(Z7=SY"*=a9pb/KOCmg?$lqcjDlA`MB2.UJ(]P`%6T7Mbp^7DsDT!7tI6P5c)opV`qc;[fPjm^sAroEk"moh9VOd];pI;?@]R?(Qa:eOABm@oUQjP96+TK<B$2OH$$F$W_c3=(M2SP^9VO2JYgc$=OrU5?>80:m&<h?dsGg)/22"9V`])Ufc-!tNM"3<~> +Gasao997d&AI`dEiPG*?Y'REGoYdV6/I:Wf>_"l+mM/7%76uZO?fIc3l]?+UAC"SG>9'TBG21@.s,k@mLVJh[4N_gNoGWb>pi@GmN%<Te>hkCB]RfkO+HYHuAnjJo;"X>0p:W$If,".Q<0EJEO]dZ/rSdR&,LIWLR0#jH^^.CP4f%h+-_<cm$r^ifn8b=N`J3W7DjeBA^?Vh`M0l]CG7n$Uo5n(aO20E%iDre<$S,.bX?NTgLWS0/5?dOJ#5\1e;9jTEp`F1p-OZ&A&;@Q,NtqI.tKR>2mRb'65iHf6)X;^&%N#GWmB8Pnj+d#H/$8+u\8#jBnb:igT$f[k9uI'?B`m4AuOM,F2E6IF!l5H&H.lgP-[5lqmRCbSI`JoI;'$%2%8iqq&&:'p8l+VV3@MnP!u@^Ki1LYoofN4=i:QN_kmf6Wi!M[?)2kPJq7YtU[2P\D3.;YV>dH]oJc:ET+^Sc[%]%"GaHDZq_LiETlps,E?eBGA?Fpl<qPo;'+n"14-iqtS5deg25`ZH5-]8XJ#=-nE!FL'`MC=fgQ;4kn>lGu':qa&GEKC^dL8&;)oMY+P<(h.]jZ+-3VPnQR1dm!s=/9->MPNP1)g^kLNBRtgb7@LSgR9ia0Kt7pP".66aJd7<<hl[[7`[(Y=<*rl;l`;89J5&1m]gM*m:*gX>tHZ>9,%'ep^h\3eco/FQK0d8Q<1Iu%]066'7&E+Yg#/K,G^%dh0U^r;e\C%cS*<+3##bI_FRmOMjph_ku6>]g'r?$A=P?L3fDm#aA]J-SN4+3m<C%;a^RPh!mb`gqIdX6"<0NT;Z::PUn!2P1D8W2M26"X%]8\4@5[6%=3%UePBU[+jtuH`/?caTglGTa6[h<.!H$^,X(05?C?V%6MPR7,[6Mo@q7,sW5BL<Kbl6-ga%FZ.*uT3T>II]ADXD%#BD4]!O^R*Pe2oSs2,;[u,lflT6`a#]#J3?GfD~> endstream endobj 156 0 obj @@ -896,10 +896,10 @@
endobj 157 0 obj -<< /Length 731 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 740 /Filter [ /ASCII85Decode /FlateDecode ]
stream -GauHIbDr&G']&?q?;<!'p&!-B7[#I9(o\G':"'7P-A)FJ-"K(4qjKbOj@(o*.Q5<?nN$@?hW)X1q#$BXU(IT<&n%pN#f-EaJ5GS['c)TT$,R[I!CZl3s!)]ps#Q:+Lj]H&Q2P<BEO'-!gB@cl,phW+X3#7D7pd_J]9^PLS8[2\C1"BE*'<m8;-I3r\DSZ%Y2L5Ikl#5hfHjFn]n5t[UNs0?]GoR92ro>"q.5@Lop'd)B[p^Bn45)$UsVP1rK0^fQ)\40Z.k(IHZg?-sdqm7i,N5AKge@KlanKZ2bFmcHVCC_d48Zhm\Xqu[P6VP*bg[+K"OnGk:b#>e7?0\KhaSk#Cc40*(][[%DMB>*!ss6[C/f>*Bs31qd9Eh4B2mRZ)DXMDJ.Li$H?F2CO:\FKkfI_.A,%m_MpH1VZnkI&&<\BX1*1+@h<4ITpr_cq)[ilkCr&6:f8E)>+_6j17kq@nf:t<B?PB'f1"sS>BXdhg)9ZdV"&hQd9)bI8;fQc+rD-N7:otk(&PU,OS#HSO`5l1\V"Gg)O58IojX:QI-P_%lgr5\j]:6;O[rs/>$`-%Thimq`%J+8BXLZ*&L[UZ==C*(1g?TDmNpR#K3R]^2:q;hDQWZDE-G.mm3r0"eEPEL].(mWln<)745V]MB9#N;PgJSCAmt2@H((3MR1gin=4UmJ8#6A\n3)"):H(n+fYr7D?A?->!:L<.[0>#6rWPU)kFh~> +GauHIbDr&G']&?q?7(qVD;tkCQdMUe8falLeBOcs#>>=.9M3BJo(P#F@$2Y,;,q1;?f/a]pR-f`q>AbF=?tku0Q@ZV3>`n1_a"ch!"Tq=3<N"?5?<l=%i#jK\m2q!K;ti!VHFdC'42:'HV-(YtEfI-rmk-DKXYPZqFNg[Fc$7L>/Iq;QUF]5n6DerX>.]@tUKS.QiV%;kaDL53bOaQVgnU+]e6qa?9kjjt5ZiUau7i`WXmMgoiGg5g7>Lll@">.l.)'!@^7],[BZS<_;8K.IQcIT>fr^FKA<$>Yb0K".+n`]sNB#ct$e'cqQ1.!,FSh4fj&,6lK2&,Crb-sfOPum+IhH:#1<?J:?[!%*--#[qAoAXW.C*Xt3V93P_V,mKY_Ko$9VlWi[Ko@[ss2-jal3tfa`6</[GuTQt9_VOjkh0[I'LP9%&,@b3iNa=:uIum>JJ@/T38jQA*=hfSrY&Z=4HB`b3<Ld5IikP<LH>E^.<CCb2M_\B5ugd1u9cFdL.8*6n#X!8@ie\gh+]'ZD+=>:L]fk82u?_hE_dfb0o*IXbJ:-]$Sh^m))dolE!KgF</cY9IMqdH$@.]NubI6n"A?n)+?I6pUd1YQ^;<MNBMf@opTYF*nkm$?a3U$pqtRDOdPr>DSHL1E3:ISMCLm)D5]1`RVTE;s+Y3coh[s2BtiW:r?Gbo)pJWBfJ@E#ukh8!=bXVI.[8RD!4@)i(d.*4(4e0/GiPf`~> endstream endobj 158 0 obj @@ -911,10 +911,10 @@
endobj 159 0 obj -<< /Length 1093 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1111 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gatm:>AqtE'RoMSLj3?TM"0:U&kErM#rGXK$bS/7][lHo[7Ns<Z2K%9`2i:49ntuZEDH(qn(`<9]cF>5*5tZ!%.MN!gD^K-."b&5o:N6J.,i%PC/r!31HqU5#6VSq%nZm$%b;i7dpfgM0hLu?*2Q.]rKQ+H'2WK^Rq@%5NfUl)ulr9dA#-le[62FWd;]<pXh3a5gkI;qX+-*`*SsR5%`b>&?-9R"8Ta*VR@-].Xn&:P`G"9FY,*d[EW[d%kN&&`<?R*87Zl#A`ep\ge)LpWh[R#*uE]D!Z1*-M?9Rab6M^dU^KOCb4hED\BuCL-Xj'`po,\M2,WkHWsW%<aPiO].8gi)t6=UB<A%n.9Ro>#\L@0$73JFU_*86m_@+__<+;.KTcSh,VutX"l*qQ!/oCc&8!)M_^MK@]+f2nT?m]H=HfnG\kicqa.4]A,qH=bZKQq7K?qm7t&n3X=cDJ;3`O+$,t>s@NRI:2'ln)>'Fu6?IYE]dYGpN\hL$o#IsCS>Ze?Xpb@t1DWN7!C89Fo2HtAho>^mR,<+%I(&sUBs#("W4`_sSem<=Y&ubRTb"tb]if&r+dEL]F0N8R1BM`cr4Y,T/3Y;/->-&%c1sVDX5`cNtiOe&g5;+m6UB*[q75m,VcIj+9--jTc@GqY\BHpj!g2S$B)SW\Y/](EtbuG'<V[<>@T<"_`66E@DiW[#pAS&8-c\Z_Z.3HXKV:iXt2<0)ACW\Xr`i[UTp<H:m:s2gr=;K@^8O)?)smQ1&LJr;uZ]<>;jI+eFRS'h4>^1KFe2?[SslfX]KIWSja=,c`6P%f595BWS&8ud@QeRe7Zf"oLdrQ\imOKOH4D)LC'&_a7nNSQ)BH4S"7'iKALAs%ZPfU\djemRk]Z=NrQkuiSNI%&Vef=Hf6G.rHpa2&A+iJ8HF7bG5d)f_NY(WR9PE'\W1lc/(;YP:3U.s?ou*X^+lb4(QBO_+lLf9@2BrH*ipW2:FDPBkC>kpQdiJ&$hA\1B"FI[C)+)4'^[gDd3D\ZWImUIDoG^?q:4s(rVfP(Y]IgUTfLXa=\QP)0(%_S-!a#^KgqpaDP%UUU_P.TVq\iCh:rZ~> +Gatm:9lJcG&A@sB#e`&TLugS7!\KN%Aq;P^!(GCDl5ge1Fp-H=-D%phj5$gOcjR\Md>O5;LFunDe@)dO=oDf73WuW:82jDJC.t[,%s.S#n14[,m+Hd;7_"?/;QP^5fotkspA8&V=VI!?D1HgBF0V+:*"Diiq7YforGqrH/faAiEsH0c#5(lFNtn<;E6,WN=L4?Wrdr:I(K_^mnLk"q9q7gtb\D`eah-"F4&&K*FJ0>]NddOMD@t8S(oT6NT]3C(^k5iXYPK;Dd%KKFu;('?9V*1tWb"!W!T'np.n"\hQ9:(ZmN)r3MjFjKC+R"Y`0a=!ZmXUdAF4f`o799a;)58In`G.+,C=TJb]Q%sJMui&$N&PB)d?+_I2j8Me#33@0oL;p?2^guQ%?)UEa=7;rX<,Q*X&TbmqGqH"<i>]9jWKgl_.7nT4(/o$p-1m,^d[IVIBfGJ;bVGMRerlPZ**7i\5lI3ihh"PF'8TSO+b,&6#bM@0EguC1$4+(%%>+F.G:Q\qO1\DQNai9S./]%)uQc":OmeN!KN;fT>9dNeF$6J2`iZ[6Zo1J#jU42csgd!k28,HEA]'A30?+)"70&D2V7o_2l<h<$osJq=/!UZhT1R;l+WI$YGZA%TVKN;^mHp"A&+Bl%/\tY@]Be,X*64T7,a692hl`2O:CjcE&t`Ss:`:3:,lARokEkd#0!%@&8.(_=sk@tFr<";!I9kpWu2qQ9YCqHD,[/<L2D,TZ1DVm8lN<<peb@1qL.c`f6`XCG71l6YlbqI_*QIf/n9eG5ugX7gsG?Cu@m:^JQ:O5B0A+0[TZ\dmn+=Zl#MM467YNIs-ea/4`!>e3Y5eDmUk[Je,=(q93p"H<'JT"DJSRi"%CrGnA2c>107P'\4%PQSW'(D^+s1_[RcJM8%Rm]h%4)G#ds1TESM![uoWGd'@Ful*j[R]Z3n0)0'5q?nim]cDBRs>K[H\6Uq7bsEMD`g28gsD4.c.Ym-7h>KYa-Tr@.'_K^Iq.)P;f-Aq'pRtV_,K*>l%co3%.<3`$76ofP+5F[9c*i>p:]90Ca0_CFpuWoda<C2H1<$uD_t6F3P2K0oZT[@\eYchk;_JXj=eGpbln~> endstream endobj 160 0 obj @@ -926,10 +926,10 @@
endobj 161 0 obj -<< /Length 287 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 288 /Filter [ /ASCII85Decode /FlateDecode ]
stream -GarVI]5GM?%,CLj*1`c3WOKnP8;8`c!Gt8\TTorsN`3o9d(cb(a06-Y>#)^l*m%!gOfR,d<c%j&d5UMT_oY&/<R"9lNp4&+LLW@][h4_os'PsG`g9_Jk?D>pcHO>#/24m/UjVF3X\u7AEM#65/]97nTrf)%gJD_`pDC!E(=UBXN/LC.>euVo8CX9IoPCCX8uj`1NmU<@`H#BtLb1[Tdst/_[(?L<!-'cb9qLG<4An@&FkOkSpCX;M7YiLg>6>>)hgHDE`RpcC@b1h6]B;')<&Ik[Ua~> +GarVI]5GM?%,CLj*1`c3oqLNP!Ks-L;*@5+_YH)KB#oc*;&\Ma"_B5JX-u<N^n++`:fii)>%6&W!#C<,Z&q&PU_gJ!IM]3>6lg.(9_kO@X[V'#%!O8R@o_:#_2#^ft\DW&IeEZ=@;(;+`kEhhRSR-=6/pmD4B"UbR5i8Mq9N'XH+^;XI!krKK9kO(lR]GO7CJQh[nO\nZpp.rCUggii!9\OG9Fc0uR-pY#:,r([L/%IC/b$g*0mUD0C7+(?$-KksRMe]e?G,Vs'NNLSLcDMe8rAS,Gb~> endstream endobj 162 0 obj @@ -941,10 +941,10 @@
endobj 163 0 obj -<< /Length 1693 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1740 /Filter [ /ASCII85Decode /FlateDecode ]
stream -GatTIbAQ)nn@i6Q3'^oI?<2I<iLHFV"kl=oU5N@C*jf,=>3K.1,cqa[I>/rB+gmL"VU1#QjD`rdlGI6,bHF%$#ml7/IME'B'b*M)BL#]+a>fE;`DNjb%0"!=S3<mQi1FEK4&F%LL5*jKL_<0TAdEQp^K0I\nL@WsWAcK^CKu?eqk@%!,-p1uo^$T&#g'a65;($oBM(Vk/%K_=^+iOZ'6KT,<@!YA\eI.'D#m(@89CaUk<`Qa4lM/a,J6NK@iUAed,7BR$Zj(LsbVo>Wfu459-1Fkeh[s7EL@6)[XV)5plll_^eBo'cjkUe"%>E5V"M5(N1G[W>IhP;EcE(`ZTEI)KCFnYA</YDBl^$5+YAX2qq(=Z!"c`L(@G*k0Z3iV"F1&^j`>m\W<Y+s%LF(+DcQ]s1q,fq[eB:1D(mb@Ar,#ZZ4VG8DL6di"k`C^;6RZM-QUsN`cQY-f4<Og=nM0?4'e<@r87;]e?#cOM%O)iC3!"s6)5o2gj'@+C]!@3ShTg?U_[0U;;;]JE;F"k+Oeq&Q`-^\0Y-X.]XeMV;g&Cmar<K2g<%n1,,$T;j&[uO!?RV%adE_]NZcI4Or4YC3$a%[%`$/$)!(1ggQ51(p!qm%=FL_u;_S;6d8AK?h`QT^^GM]h,P_h%$25b;d^7;86/["[a6,[]eVDZ*hqKTHA(Tb<mNiLcS$q2=sWWVfq#@:#Z(c'eFqk?!rC;?aI)%shp3aPaLQjj8.Kl-+Nat%]-5;;>3[bn,*Ia(R_L_Nk@kqH&Z4942I&K>p11SRAJ).=,=Khfm/P]KmK4<'31GKn^&RJsi1MaG?MN!S-m_I;;hln-bU-'"PYRb_dD]$tV9Z/jBIj\S+@\t&(=ON1KG(C"B,B5dAS$B;0B;dP&La\G?]>L>!)5)/pOI6B4>>qDC-%F6HD)l<.,Xff-&:@AM?5HC,bu_nO*XT.ee@2dXR8,*LDYi67m@n\KYu="?*Q6ad9)Q";P1aCpH;k^]joC8q"JiC[`"3^)$)<6I;=S_6al.Gd\8^&)5NI!*^BO!'PD%oEJg:f[NbCqm]*tb=[dup?F@=&J9aO!Y99.+I]"k3_1KnK4r;9J7qENhE3uF0S+iYDi[G3IWWij60_Kp-Gt6"9/oM9Q$EQ6O`ItAb[-,uTjo<AHt&S>o/:Q>B\F8SiGEo9]QO[^?^@36gMS93ndF"Gp=N?>3\u(M%6%:pnpAC"P>bt-,YqDnD^:sR\jB"5dW9Pt%%b9#C..'I6mLIaW'qSd_C*)Ib'&?2jO"jeRq`qI@[n?g]5QB_dnq\s?UMflKZ)BSPjdG+YC2%7gDkeAbF8p6S#s$Bn#u/_-DQJf0I9<6ir+5"q)AM.7C[IJftY^8!U0L4[D0Ct(THC-U--;%_H$E>%#rHl_cRi3A4)S1bd>/^L`21m<;:[>3H$@\SsGW>]60C:3;GJi$nZSR.?Kq=-_qu7=C7@841u?2p/JMc1rbC.'^LRo.isqTKhXO/c+0;fCuU3^q9d.`!Pk&TKhRUR_l;u5J?GGisj:?8o5K%KLXDhX!r3tai!!PGPf(rgSK=]gbO8Z%L+a!B*h-Q=Hg#m)K(CgaVc9eL1hhh#<&>m1`Em^GF/.E_\E8N^Ub`@/=,n_sDf=a`$>#L.0Q6&C9Z;6N>heLK4Tr`FU$N">2+4*_;XYS?f(#n(NEb)k_/n;tSd~> +Gat<AbAQ>unF!IkZ9XPF0e:!1aI]]j'^,U(TNItU\d)E9*MJLXQ/k(,^-e"q8Qh4_$XGa0)9mM_jJUPf)1nM@mlJf[9J=#IY!+_4rhKDKgCrDPXIW94U1pkIMIq7.ekr)I/trAi"-0EWFN_3+ejX_Qt"=FQ+NkDNfR8XP&RgU\L&T1ctBo4$X$\ekl79Hr1@@(](c?pB(R7"+?H/sb/d13H!-f324cQL`[D-&kFWs!b+?TBRI;fO:kU(<o'NPm`9W@N3,-?b"Q>.F4_D3CG\S'$)6aimBU2NJH?#:p_m[#C0E9-Q$e=f>J.'M7=Z9>em*?Th3Cc2k[A;Pl%k]E%2J@)h;N;X5Xk7shhr8TSELf!S]9ksE=@?F>B&X[;3Gr]re8LD;nmLG=5r9?T^TQBeBn=[%R+=78<ds5qF#poqXj0LsBQ/7<lc)9QcE>nD>B$Y.6n)4_MnBkZ_gj"61_uDa#M;SZ(3XEjB!eL+aei'T?:kUHK3T==pb#rgBO0!IO0XEO.$jo@7HmWQ`*P>;&9XQ4$b:C6G583Pc%<',B!$]%JF$B<+OrcBa.e]]7D(bDXZm7s2kk%,PuKY9(,Dd%V+KZN)4o((8mI'QOr6b8qP7!a=>l.RDEasAi-/(7q':4?fDq4-jI"ei\TrTkSneFkEgbbj//."O2cqZf>\8&`#m:%EPD^hHo@XaXI[InWF@uFU;X(3'(T3P?4+*j=0r0TH)7iIK26(7(P]r:ZGnk@2/(Y7[4t:AQ1!cF#jHBgFF:iogJWFfUAtc@A9*6J.7Q*XP@)c&KRUL#_RXWFF%ON*SRB\a[JZ*8r9`-rcKP()$A"^6h?C$_HWA?UH:7M3I[D8FHcC]EkAZsY`I+rIJGFp@VWJ*K)O'1e'FMcK>?f)Uf/9U'-`*NX&'X?I*m<ju)Akfl?Q@@a=YnZ%a7^m"p7i.De3pjI^"S<V_h:o$$?[`o(LH3l^M/Wcg!naFJO7pkPUMd?saEQok?,(s]9(q[EJ.n)WcJV:U&s-j!JP5"ZU`OuEmeK&J9THC/BaZT8&-Y\C0W0V)&C0JWGgY;(?XNKIu3LE46V2WE<1c9/re+2T]W2QM-lh%*crWV(?Ec&`AGo`3OQa2dm+E,ZBU!NW5\G-j>%2<[eWR%A[3>ROr$Gn'h>1AGi4c=A5Z(nta(1ReH:p48Dqj0@Odr_4CrYMD,%2^N+[$la*1n2%cUp/%*./i1".om\GAktd8I-`=kL9HNM*hLU'Mk;'OaYk6H#3JSt!V#qLB+_oi1%pG>Cc@#>T]P(n&EbK;WQ?RF1(^Mik2>R3OG^MQn^%5X:Jup<G?nOef3`Un&t@)HlcU5UTpq%JcIQ(_X3o]H#t$7#,!LI_4El2(kgYOXS<=C<<05+Y5RaI]1l&/4nYf&Z/9E)f)XRn@R"HjbTJ#Q(?jQ>m]_,jG.TeN%<MWn>WA4L?#L]<-T;6%5WU0$-;nkcQ<pL8p-E.R*4h0?Oe,ot:6-R3&^-*3-o6V+kU3.,<+#LeqJk'h`$5OX.&]XeIkKH>,<V9q58%ft)".b(FCF2T;=-V5d,`rig&l.pUd!?R^ig>2@@@3@%hl.\XVis>,BnIljSF3n2]U*hK]r-K&P.=EWBP+oO>;kPdGT(KP6_?@'>OKfh")mep#W$?cB;an?]&%\Da"H#mf"A`qbDe`+2iCi%)1l@CBlm5fo#-%k%5YJmEiOAJ[;;7b-oDMS>0iF$F0_MK$-5;LO<3W~> endstream endobj 164 0 obj @@ -956,10 +956,10 @@
endobj 165 0 obj -<< /Length 231 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 168 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gas3-]aDV1&-1WO:N9l+oXm"pP-0L"3!`tOE@@8J_7'?Mi8^;qU'MsP*;B''p^G;!`D?:'\JidS/;M%_1DJ=JL5pnEj..^U@N;CQ_EZUl5W0SC5obNV'4PN_cTWmHOP8*/'hhCVgXVTK1[(>;?h*rG7Nf$d^!Y5+<6[e1Q\f1I!0R-ZOJGOgImOsOrlO%FmtEo:0]`d^I]_Kr"TBThoc/Fg#M':4TR<$6?E~> +Gas3+0akiP&-_"jI`37Kn@VCIBj;$,3!_i/EAMTLMh:udBVd=*[lj(A^+RfZkFobE<(LsSL"'&"HTbSQX=[>2e)E%kR?olXm:i'R2U/.f)11!t925/>6:^=hbdeQM=rkW9]B$9?_k[6+#34jLfSJ,(#I]\kS$2Ge9].L@~> endstream endobj 166 0 obj @@ -971,10 +971,10 @@
endobj 167 0 obj -<< /Length 1042 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1056 /Filter [ /ASCII85Decode /FlateDecode ]
stream -GatU295iQ=%)1n+pp;m\XB?(KH;!!$kRIcN#.lEJ.#sf'E9,5D]&qmGQ5*&9A%083MaWIF5EQZ%]@H962se?`"PtW#"l=,$]g."mK.'R53!]PB,B%_oIbd-6".OYP^"%>''m_QI[JCe=Jj>2sKe:LH>#qOpc938'c0lV/*F9bF2;TATH/FV"s,3ZLjJjj'5S4R6-qjQ;E7_c(qftA#[V([9OLYeMK*b"ar#^i8R'I&Z]Og%iZ9df"C[`Ia-';80R.ph&e,S0Neeb\g3]GA<_L'L3@hQ2#Pa'"!D.lIa@3Ku*LMpL.WGmF3/D#Y)6rQ:Ia[5ol7'FO*"if/M9C**K;*%XZ*;>IT+@EsY^<pY:0og)[JQ.JR_up:n0KNled!fIA),P\N2$q4+2-$YdnRZ[7%=`+<nVnhgU/qO(g%b87%/l=Q,ETqnWm$S?XhUgGQC^K'Uo?]1enJ!>iB6<#e?mF`RY2ct`Lae@IrZ[E]5p!-D9ugTi6M^W_gVc?@HDm2iAHh[([7kG&^1nY@K7JM<$e1(UJ3.Xl1sohGN4WZ'k&>njVs<][L)J,sOnA!V"9?"=?+pQ9$W(08dY[la#0^//.'9Y#sKC_ijh0SG(mGI4cq*EnME`3<Mg99jBU2`j8S#JV9R=ZRtJV;u!cXsAh*>AHf!k2]%%HWOPA;)quCYIs%=,C>ZIl[F:B\Pu@IPQZUUp6j_T2u#6\nqgVfW`]aQ5E_=7<D?WX0?uJLL/t3#XBs0K!]lh=%D2C1!9MZds[bS(j-QloW%l^:N!D5)9]#c-sWKK-]dlCg<nl%TKm7eTsC`JhTaE%O?*]DJ<+uZ-2M6QQHlTW/qrgjoh+lKIo8jZlL.!(@%/,W+>GDcsiY/b>KDEjFi:0LUmF#3ER.<"A&Xs"7^(]L/?[.MeHf)t`'cC;*%K-4rMaN!iFXplK2,.aP$fP,&uEPuF#)a8.TY-`S-8q^g6MPbcE*(b7p:HNa.j!K="oS?g(pNdSGo%B)Wh.h12`=QBf=fK12PUBZ`3]M8XN>s`JVV~> +GatU2gQ'uA&:N^lo$f:WE.(<JADc$F.W)#b<.XmDqI"mWQ@_I;ZX*RENcVH=2GgA>6Cs%[bjh+kj^C%Br.TAD"?>sQklc=E$1abg+YUb6H8H*s6j%@Mn:'6-YQLMD^V&)uN=%cNo`P_=!=2a:)IX0i<$Sh6SX$37-#2_iE):tt>@SXVl\VN+o$TR$QQa)aJ.^1FqC*Jh0Z"Y/172Ft3>ENU^i4*=+T`6lE8Obqj;l1dXKNH1!CaAM/C.5![k$c1O#X05SRQTf&.+P>aS<B5\Z*3UX5t7U#;cQAh&&6/T7p*JcGpn=9k?4]@2=(ASMm5+:aL:b9OJZqZk;>]Y)7lehYUKn0r@fN].TI6c@b<89mC8o$#g&c^aF'6C7+1mN=/U5L(&hRscF:-t=''(t/J<hVB\4"P[JBHK==piJ"]2e;d6YCMp0^U-pV,@%@[klj$HW295P]BueF-1L]"3YnA'W4+uD&:W3?<eXI;XK7On3qD.h#Znh7\cn2@So.8)bE6#:FgTaSO414!U-_8,GO%pS5)VP]-5XA@JH/`C5Lh!R9NDn%KqB,Sd0ZdF*g58,s81dLkFIT<'c(30NSd:Wb7n)3:_@?@a7+V!%lPdm5jiWE'S`kD*D<,kR4fa^`G'M5RZ^K,*!\uY.ll]<r7$0*ufs!>K=]'!H/JXJ+diESo]sDX<>(#T$nXeg$mob&iqq^4Q;L.Y)M$OAaT@nW;_lVp%HDO[K72OV29hF=O("^nNDsVGepbdf6F<lYCDK"NWs(6+Dq)l.+g6B!"mSA/(mj-f9oX`W&6#A<U[Oq#Zi571``XVU_$'jj[Z(?sZ+Ya9#/kFt+\S"@Ic;#W.*V'Jr#K8Ej;&<4&2[@s8PnRV3s/P(W\M]^_bBs!:,#*?WY+G<`**AOPNgbn*Z/A:b*\m?EaaRmR[^e,glUOoS$tF/Dio]Q24FF?-("Xn([8CAp2SiW#rh%D3P]IrV,/OOm\H<dOOa`Sk`Wel2>LOm2pK">H?shM)+-P:<ft):EEQSM:C,^b^8rm9rW&>I2>i//f[6Jnh4K=Ktd~> endstream endobj 168 0 obj @@ -986,10 +986,10 @@
endobj 169 0 obj -<< /Length 755 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 870 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gatm:]5H@W']&EsgmSX\8PskKBE8?\LCO@=#[*T+MG1Q1CrrO;+TD79U29,Z#>fXgYOCF5pVB3[`88P<"CM6BLbfQm[>+c<57DL]N0,=l"3s0E"[DGsPHDJ&^Hh_ATI@UsUA>-B!Z2(VYa4"H2Pp-)P0MiKrIEHOGJ<Os5GV>jI$9gO-#P^CAuaW]qUJHuY0<c6[+_F(Y9[qj(bfTIQ?erV!QL<:2N]o6OGh2ST+6QMhG:(`>UiSiBI$8k_m9q0)M%uS!gg*?9UZAIC$NT2\m:WFc0>]P_FCGOqX!.lk"e>FKcp)>Kj*rSZHu<A3JS2:N13i^X1mQ'5.iqCCO8#N+VUT6lhh="&RaQE?ruKEQHC(efbpqjaa@BaR?o]D_hbgY[K@=*p(/7)7<?YL7TobWs,/H>>jVHCbgPlFDPt+0<NbD__r!pHDY)kRe-=T&m&1p>!t,amfXT+6+=Hd"SL<%\S#H/'aZULP]BFgMl]gAmrVkO(F>=P%LHp9Bp#9uWb1=t08!>ak:KgJb$dQ>-*qtp[_#8s$;X3`70Ng7gqG!dj+lSA<b:OaZuUm3[H5?1CTfh\f>I?'Ig'V_D3+n-Q03N@qa.[617@Fm@OLGmiE#"\bMoOR"ZV*2e@l?L-BK52i9T?2A/nGp:j?2XbU@"l*.*snB&8\F5Pe<]pIY>(jns+S@E?ET`A7/dg<U$$fjO_+#b*,.j[LDIJ4fBTd)@1RIiR(:C,Qu:/"b/'iPq>+8]^TJ,~> +Gatm:9okbt&A@Zc\97NWf/@$STp;ouHDo>Yg7Vc@*XFKW.fu)gSDTuk1^"E)ekRq4dsF():,t;PAe,6Cmg(\m$`B65]^id'<3-0.0e-ESc`6WR/YM2q=#@Dfq\AdoY2f=@j7ik'W;$T>Sr9T!OYaXfJC(Zi`%O:JiHia"a16FLCM81]7"<iE;%/Sc4kB@.qg3Vj/?;sVn8eQ<@VP.!*3iRg>QWKHf?k3g$U3.+/m*<NKOZb6A*3$F7Ak1,u`[D]$JG_a"VA_;k3gYm:iTQk$prp:!YY^bSc43O.ufE>J":pJ+"CEG``n33>@llF+IN^kVp;XF!"94[jqPQK/s[X*d@f=V&25+LHOZ[)ua@pfsCbB(6&aT/R3hZ&i26o*.-A?*%<.N%%j2nNXi,",_TWqpcVFbIah.E?8+Ol_/-&R/K4?5pN6*E.',OSe;1=N1O!C&G$1c'9[NUir#_j)rii]g/`h7YUMX(0=s#?/0.74hm,J:Q:.3=qWi57Ih,86GZH\Voc$7>+PsA[d1ec+j7.tWU*:9X+aKqTs=CuY(b6KH^6>t`;H8,QM"KaQS?dd[FH,TR?%*djl(q>fsYWS"A&fA9=SO2R*LKq00*.c;We(m]1DJ4N3a7NQ?;9.$b*WZPYX=7Fqf`RP%?5FG>!nV6.7F003uJ%+F?Y[)jo$RN/aJX'.@L[qF'T&T%8:f+>!Zn(&4\o,[.Rr$mS+.'qSja(gJ\XLIA6R_3+,YbbmEg!Rtu%dS&#m:AI6/=r$]',S1bGg3*jSO6FQEY.t3YIVl0_EOU'dKSQ<G=Z0()h4l;AYgJ#<if2^iXF@/0JbJu),L7>URD=$e?@^'CAFeC7"APjN_pV`5Ai#Q63~> endstream endobj 170 0 obj @@ -1001,10 +1001,10 @@
endobj 171 0 obj -<< /Length 817 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 835 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gatm:bDr&G']%q&]^'*ZM_T[bBVgYKQ.j2Jm@>X>qh+,>Qm[7R83aq2C?6O+Gj'/A)H)%F7-rtgrHbqT.rSNqB/OG5$6,BnF[:m'_pD'HiaC>6(ELuGE5<Bk27&3^M4G`aLA*#K(8n2JH`-/nu?Q#]Nl%--A7;!b.\f4Ki%?(TN_Z<E-(LBpWJZZn/LK:W(]MMKIKBQ2@E3QNB(-o[HerTtUgR"7=8c*=*]2aEV7c:PW1$D^SM+ShP$j,iUl(i<<!;T>:W#koRK^q5m#\IN>FLlpSHYV:_pt`*db3g4t_@r;%CpO@.<u4^q9kpR0*&?!G<V`-f^L61S%-n0?WS9`p>EgDl5?83(mg*H+FeO:,/a[$<,2(+W!#fD.hd9LoR:gbRS%>gV+h3#_Db^'us,g5,d*<$.LGC*k"Xp_dGmRgHa'Iu\gANapBIS4@fBF&@L3@2\0)0G61GVq's9mXkAFo2HL5(6'iKHMG^$N26MALVgq(AYr>ME-<V2A7Rs87uVIlUkc0S+PE]Hk8a#J@]Bc-;fu);-eKQS:P*Ar'_&FgfJA(r8!16]M?sjFSO$0h'unY:187$jIR%i#^a<Cq"PaeNcGQ._q.>k4*g?H4>qA\L>+]EX_Dqjj[+e4Zdo39i;nukP5k09lY,;RKlEe7!Iu]Uo@Irl=/A5FJ3<B58O&p3=AXdUSrGG(H%?=:&UEr7:m5GaSkTdC.&B($m3[#'_U9S[U&SSWV22Ej)Y&G6ni0L>fB&mqdVj[m,sQ*,9X)>^0['+UpG!Gqmc)cF]eqI:=$2+bj0s?X^sr.V>LRb:d;/~> +Gatm:bAQ&g&A7ljG_=R/$;9<4L@A*VEbMG5T:l5\d-3OC_i>t8ou!OIAquJaqh)^."!0S45/?mGC1@ShLG52i>=lq,r6(6B*<MB7h>pl+XSTI)+@D[IU:jNWOt^8;"W;2-mG7&0VBY@5\4=H@.'3_Z'K]BDK@tujXS`b\41P4Q.OOfJG6Mp;AVqhbHa(GrUC;d'R;b)=iKZEGr"f`Mu?QB$]2K+\18FlE9O^OI#F=[hEe6C%4gQGQk@n7*Y+Tu?TO-*%hmN&4MZW$X(ErPG:t$i=qkJrALW1Y>/(>G-\k/8o@]HaS>]"CEGb6n5DNR$;a>L'tj@X9sNQQ1=LAY3QH`7^iUf*%IT;IG$d,aSS?O`$@i6@>FE(#Z/K-oDD$m4cE6WZ$`V_1`JJS5oLL(/WW*Z&)e!a1lK:&`b^(N6'AL=H?Pe&K+"k,,aP5s^A>opHZM6@UO&qU[-+/qQW9C3`/bU'cd#lT5\Ji$1Ph/WJi&=PVf)l?':_F[)1dB*&=f@llGrE3;I3Gg"5m*'(b$(/*\Q#Q^`[A[k?9uFFaRIs?%Vi'*j97Y*"62T7(Hp&_?eQ1_G9^Bn^!J(gg/kIWOm6p]2p4,m^kl`&]6fC`h:C:Z,NW`&jU2Jeh->p'i,L.-q0](l_n4(>%?k@!&+em0/h6>/od"Ac7YY+Z;Cac[[Wb:eQb&,2dc\cek4VDT"Uk%&:hm7(!N..NZ>4uVo*U]+ts&sQFK="Ta!K"Bdr?Q'lO>N+-bX&Q$k]9_EuJ`n=7@$2#Gc"9re/:V01od=(fjL$Ajr!pXsD*lGs%nO8="YCK/)_!Q.3m3'\SV+3Hi0JH~> endstream endobj 172 0 obj @@ -1016,10 +1016,10 @@
endobj 173 0 obj -<< /Length 668 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 678 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat=)966RV&AI`dFGpa/H9Z^s-I*cib]L_ode'3b_I:G"0#lB8h\Qh6%tc#G/h:X#mC2t,Qhr3+p.,3b&:l5>&D.1(T]3ih'3&d?`$(6E7!nFhmb-so!rN8M;h<p.,EM+6KHa5+&(oMo1g+G9i?:p#DR0KP#qs![_Q^9eCn*J3Cc4ss?30Y>d'!f*/CV+_3$0]QH2"fUI#Dd2.0YF3UgbHJMP4#'?gr)Z\bZ"gl0J2EEeA.-<0U)`TRY)Pj7:7V+<#]B;.1aF/GU.eDILS[\pf]Gu]8ATpA6jU7?,Mh=t]-Vc'7/HM-Be6(q8IhY;`^XH-IAZIQJp$2WL>E;"4VLssQp>;rY^%G"5%L-qktA#qbJW(gre_i.!00A,]/V$ife.,u"^/j5U-HX(4*+\tupfrU-G8-QO(a4mhf6Z2I,Oo/#8\hA9qXo,0LOAP;m=FHS8@Foh+".eXQJjYC\g%IHdXQmfO46LeRm/+mF$b>XO>eccpFYSY((6B/8O,[[[]</N!A%U$IPN!0K+K!WAIAK<N8X"0ql?_#5.uLbo,Mp_pS>h/Ke^NhEFn7pE$&,/kH.TKNgh,/trfZ=i;]\V6%P%mS<7`[%;=MX+"o[>>@E=?R.;`$dR0@U",Iig2Ne0PXk]_kV&M?RZ):h<sZ3g=;*Z_qA~> +Gat=)9okbt&A@ZcI,#]\rGC"f<gt-[FepRdQY$b7@^8O]8I87\Ip_f0!!sFq'c5WKA)>H$)]n%tb;Td4KLCAN%1q.q(a/Q+:1G$6l[\m6$r[I+.i/A/AMXL^H3,7(qBVO\c=F`%tl-';VWJ)-4P)pkUJ^WR4V.<!$U<DfY`FTg$bM+RTX^s%s5S!K9l=D>a),Dk32kC*=]YZQTj[I6\RSd5BKfa=3.%)j8MjZ"Vr#?.i,j?STrV)V(WL"Ca[0*U;Q"h;O2g[s6Y@&di`_F-\WF*:cY/pgp]l+,he@ek6;oNgX[Zh2_3Do_r*rj/:IOO:q`TL3Jnlb_=,@bE9_eMX2bgYdcCJ,;s/(FIm>TBq$X#ko<./bH=i,2sc>8IcgjjQ?$%]kLGsZYD83+Qf]#nmkKeOWDUr$JP8$q!G8"mG^<:RVFr?hE#A*kWpl`D4,-um`PZ$P#Wj*krC-QLd':)/NE1=:H;lVY'CK2;1]<>joE`/BDR(VZmZ^<%3h6?*Z'DEojKMXQR\W'jW^^t>_m[Url5m?_F--1Vf!V0)hqre(ga7G`pNp?PHO?:gjUM%V,.bE;)L)QNRmu(l?-.!FaZI21uaOL;YLl+EU]n)kr!IdSrA1WCZJNM!GV$ZG`6PCS`f3Iga+Ur"2^$(!EiJ`Tmb(50:]NF~> endstream endobj 174 0 obj @@ -1031,10 +1031,10 @@
endobj 175 0 obj -<< /Length 1103 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1126 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gatm:h/Ac:&:`#5JbHD3!>jL<Qq<d3[T(FLF^9k_<QcH=`$@kV1*C<&hp2K?3ttR6-=2(Tn*YD_qmm,)QabUt"B,1N@\QsJqh6/BL$*JVIqmhH*.`sN8GHGFMl,<+!^^'V&TS@[FD1/9+^Si/[/bGMbKT&oIr0sjG<gPVQ%j"/E0aZ"]Ht@C1e[rUreo?(Nu:1n?Ba4H._KaL`u8D?].)hdZV<cV>Ret&]&F6_S]dURtK928`ZPQA.o:$Wn]*8>Ge?9<lAR8T#$"a#o2l(StM8P8tSR!66F:&6p`QjK%*kV.CgEmWlVB/CtQ=YWQLp'Zu>Tr^u;!"th&Hrq9u`8(o.#p%hOOZZt#e%VIKJ5#r$V+MS$;6m>mB1EbbR8LfY*5J#WXX<(9*Wt^At*9bAB92.6bEE]X_b8$f)Z:,`RicN]Q<7sD5cI=jeAKJ1k*frM=%.UmiV?7Q@RA_HUYq>$3!oEikn<a%RQF_^$r>>AhrKUhZ#TUmc;;\TeOiQ5NhPV")_unX\NF:VM\O(k7+(JO!a#u[lZ-XM;dj>gO&gf)SLkF@M!5bt[)8+DB2URDpUDqc^#QkU[TeP[.:j,3IRu.'d<D-LlFoJaMdp0E:OWG?K5b+UhKU#/IcG-=)ks^p+=^IP.B$0[$$QdG?`T<p,o_HCP/AAPU/F!IE)#4*XhHi*!AKoqVM(&Fo>Fg1'cm2g#pJL;lEX2R%nF>C+?nNZ0@iteDbl#uZ.0uKVoJ]-XtrIn_uRDpjD[@:+liV23HA-@8hH2%aol\iboj$U!9W=mi>pnA+]&l<1J2ZH69DAKfch\okCb%^n$JQ.]nIX[MHEf>nZ(&Kb&p]iP+!X&>NOQ2*DjC_Us=a3Vhc.h_lPnu4>1BArLodC"GqVeLT2YV/Jg[OXW_B3J3Nt8#?+"X$D%#N%DS@`PK2$tpccA%K@u+<'l3&[M9E:rh?:1C[[&b^Jb,kj!"W.p&3!K2L-4hKcj_n>eet5i[$Zl4b>(kMt6g_K#e.VAN'p_Z6?Z%+_%Y.KdoHk[J;pD)b^g'rmiT?]c,XQ3#Hg](2oWt,9$Lt?%q[(/iV1'YKIYs6*V&2@*>eWM),)AcQfrO~> +Gatm:?#Q2d'Re<25^cf,J;\9[0PQa!2Usj2?'h9[eZoFHQkV!#b`K4-pTq\DPCt7n;l%LdptRNpH[RQB_8Qkl+9<mpU1E1ao)Z3<nUhTC^p3ga"+foDdF.l>ISZ;HB`531Y6*fgck-KcVu]./2uEXVJmjY+1!UE$E_a)2b=8'cE'?^HB^(s3i_UCH]gX_e/[:tV9)>V%#QdM!rC1:g[h'dsDJ7Z+54iX3j#/FP>Dig^blj:L#6F%`"2QE/FS:g;6bCDd+hgmo=Dh269<5]rb;@Q%E<_UiQ(L6U%3)l\Z_R&;Sd2oieF4'BYEpdj$^l9,5j1L8?Grois-/D!pO]Mc_a=^>54/R.:E'r56:UhNPFSt$hG8rV*uq3oeep[6Jr,:ifK2j,)cKY+(gftlWP5rq>cm,$qsX-cK,PWaV-1q&N9cI4`Sr`-VV/W&;/NZ<SEi%F,u<469F/t2Vo64]VAF!&'hN6nlVQM#$#`!crg2UGAnHQ@a)UD#oMp_uGR;'VpA(-l0i(lkDPmgWLEUVugAlNJjpIjq[[A_E_]Ca\11>pDf-[oH(/.d#naNdHRfnJRQfC$9>V1m95L9W#fPh*mo.!F&,?/O,?KI>s>dpGplLi3mKlS'p!GZ!fW8Y*%(Tc,rWV@cn.E?_B@D&tjgfC7c(F"tV^"&f4qKt1Ab29?b/8GL.&9r).Dke5?2Nb*X$X5Z.YKZD%K;Q(Ok<>7F4,</-^9m?^^^jWGs2>nVj6arB&pt+L,TXehqfAI&ILi92O>C(AJ0#<:i*nm97oW"bOZWnpRk#@aWRcd0cHd``f,%C!o(W@BAX[l4%Jq&4-b+GK*4rD5i?6qDD75U>QGRq,.rnP"(?5S+HRC%d:U\7'F)q=pqO`FL,_UC)td?pd,MKO;$o4kXpHZnGuVS)M)L[fBqbt8SZ1d@7n:PUG)>kkV9@b^>Id;j%2c0SF,Nd:!4>?]H0kg2`9#IkW'%RmJ2!I;$0:Oalqu6$\H;/4B&$0@le+jO^jn,/2!!i$+`OORkt8lfEm99:lHF[rN,@im_&/hmbC^n%10g9Y]")%K=r=FENP`@7r^0E/`UR?\20$ne=2K>%`__/o#1-`.S4X8'J1_'2sMr!1R5^>J~> endstream endobj 176 0 obj @@ -1046,10 +1046,10 @@
endobj 177 0 obj -<< /Length 246 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 236 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gas2C3t&nj&;9rX'jI+NleWl>>UsJr+c+a,7F6qqe7_h.J+(?IJe)C]@<^jDG3$S\P(4f'E.oFe$4.D9JlL!X8YK[6HWUbie\P_u.r`t!dLZhgdjFg\8Qd3NgP3_W[6J!?lB(HYL_V^LVNbMn-nj2b3Li0A?fV<&(c,[9>E#+4[ADW`7UcG]W@=e"6QtT$j>rmT1pTi-1[EoOpt?O(?J##O2`<Ols&(_rE(`$V(K/tYoDfa?:6>~> +Gas3,\I-2=&-h'AT41DE1@FLkfsCc3/-KrSYm@q'J4>M*qY"e:[1ShhB9$nN0.&Ia`2F[N;FoFJ!Z?oH'hVkJdA7WV&_<`A@iN_&l;SRT0dMVo1J7pAX6Oj]gAZ4')t<H4=s+^/,PgIm[>iZbA50bH37S%bPGo@brdD8r`h3LaAJnD[TG1%]qi@YF7a>i*F@b2>]?l3d.@R,Yrao)]qQHnF`L0HJ%&C19klo286XK~> endstream endobj 178 0 obj @@ -1061,10 +1061,10 @@
endobj 179 0 obj -<< /Length 888 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 901 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gatm:a_oie&A@rk";GP0(1Oh4%+#%cOreoT:rMRol9V[(7tiM)>2&'+6]&*?/RAp<!.imoH*`YmbLu&s`'XSkD]-lo!\BMl48.G6bO=%#&qAkjjs<OFWYJNh#$Ij^M=PT&2^=LJdVu42Lr2mrAmUBD!q+d27lr(Do]=::,5i'Kuaba]MQ_i!=n0i009=u1'7Rt9bHT&'2K\W#bN57&.!qG^k\8XMOk>,3Asnp$VUop*dUKtJg284,@&g2e`X.om!YSMb"gtbV<d[RqMYb(">M):`MVLlXD3/&"@*0Q#MQrG]"d_j8o%FuinFc0'Q>4#^;n]Qo-%ROj45+&c19MDk``?8WW*cgrWHj`M.JA[j"]+JN5I\Ng6bR<h?uM_;/6<E+HVg"^fXu(go>Bp,eM4DWah;aYloa?4n*<'lP*8A-,9X$Km1kjG*b831f6%5`>JqXf2BIlO6CVudM:-0Uk8Z!)Zblu_%$MjJ+XKj(4G"4_tc-R1*EEIAq#n'`HJ@riI$SA]J6mt0YC#C!t=j(]@/0&o2Sa=^[nk*5Q4M1#P#VK3Mk--73#.iWDZa$X(.nS^J+7As4:5Th5Md03/bfC7]@-ra\Fg:2a08Agl=,L%I[fN+kJ`%@(n/^%2p:`<$0&A")\48ZEc)^)pn9pXX[>`NQo1/M_SYX6Z=0hJO`tDj.WNO%<%Fu-]%2mSX_??/a-IW/hSP$N!$iulRnlAXnr"m/rhfSPC:Z2JHQO0^(^.mm&2L@g':G>!+qe578$Je/t0hIZ^_Vm!:oPQ][*q-<9pH?,\5ea<iU#%;;0Y$OApAPCn16iUfrltPIOiBrgNSDGo'<\R-qK/)!Xtl]Qj-[G-`/0j:m]tF*k:tU?9$4J9ELd6`]bm=<KV9~> +Gatm:>Aoub'RnB3YV^'02W8(S)lU,8WS0L/>,A4G?H+$70e!ceN6BfMq^?W#uL1h7>cJ/Im2c#F0f/#r8I_;6L98?]X#A&Kn(b(#e1`*JGBn*N.UEtr4KTO%t"h8JaHNiU&`m+JcKonKUWG5@H]aC+a,uVl7C&`26\cONirMC>qOn'36?EE2aY3:o7A?:"+'Z=FZOQqo5Wsg-RD(bNE(H'mU<E$m-DT&BGD]OG?b8L!Mp%+04q-)B2&^nAsr3L?oK^P7]F2%^q`Vm<`(,ZI33Pn8q_aP,FO2lFZ>t9sLl44KG91>o3>O&`Mbd2irNBC!Fhf\11QXN$2Via`Tcb(ct6(FQcmq>:GVmTKX4u)?4nho]J6h82E5Hi@JaXA$A]A)35*Th8>-d8L*/&&.'Qm;,8pVj^hC:a3)W(`tCB5oZ!tpfbWob7cn_7D;ZDpDb67WKB^b[3A1'*eLn;.`%cL[(0M"bTBe\s+&RsF[Sq;]71s1U8P6Bkj(\Hf$dHM+=.qp=\33>fsQonoba`S$g2iGa/7Vl#3&^R@[O$<'NX"(4`0;A^Nj?4hJ"441b,pDK"gqXafF(DZ0.BPVKlbOD(8Y[e<='p9kALC<'U(B$]LMZmu7FHf9ijupDe6Oq+-;)=QFgNIZ]`S,/OoWJFKYA$SDN2s2(_o`Tu/mWO*KU<]ibpG.aD:>k%R9e^K8r,f)[!ZqHQXT/Gh,&8W*i8pEZ*]U_1,NXu!Y>oX4j0D7%f629<SCq0i\qWk()>h/t<pd1X`SZa!SO:TCTj(XW1EZ=2N6gHq^0$u13AUCq&4V="i1/%qQ+-NW6S,Hor+Y66FG[h))gXRD=@3k<Pc$T[_Y&1En3/CYn=#\n*MkYnePP7,ONYjQ]fJ#j"__KUirrXU>2_b~> endstream endobj 180 0 obj @@ -1079,7 +1079,7 @@ << /Length 301 /Filter [ /ASCII85Decode /FlateDecode ]
stream -GarnQb>,r/&A7ljp/iTmqJC;U6k<N6P&H//PAEif8\h`kpj8/^Q(n]IbO!O@Nd!C4Xg\Y57dh(FQ>tP3!IT7rUt;QH"7%u(HNW4/?<0kP44X.G"0W7WMpuIJc@V<&Kb1T_8EndSpT.Y=%1%uAZFS0c3Ai@SBXPE,<CMK=#!Q$W6\c;BL1gjQqLH"IPJCj%s?+Ggm29@Q;XGhZ!\uiqC22\kk!;YS`CKo8cnZpg]eL)P"![#jglIlKM9G"WG`8bX[m'>5$/uiEBp8m/PR@U/P<US5H6@3B/IFjY'6RCRb~> +GarnQb>,r/&A7ljp/iTmqJC;U6k<N6P&H//PAEif8\h`kpj8/^Q(n]IbO!O@Nd!C4Xg\Y57dh(FQ>tP3!IT7rUt;QH"7%u(HNW4/?<0kP44X.G"0W7WMpuIJc@V<&Kb1T_8EndSpT.Y=%1%uAZFS0c3Ai@SBXPE,<CMK=#!Q$W6\c;BL1gjQqLH"IPJCj%s?+Ggm29@Q;XGhZ!\uiqC22\kk!;YS`CKo8cnZpg]eL)P"![#jglIlKM8$l[J?bX[m'>5$/uiEBp8m/PR@U/P<US?]$K3B68\jY'>(CT7~> endstream endobj 182 0 obj @@ -1091,10 +1091,10 @@
endobj 183 0 obj -<< /Length 962 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 973 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gau0B997OU&AIm?6pcL-7#[bCZ"IR@Zcto8n]G%P_7^Oh4QYTWJe4_HCVnm46[tY!qkPJk2C7@o?>u:UN`>$J-:BgP)`qS*2*A$*srR67`Z_TQq'HJ%_c43aL)okhh1!rZ!m`cNE+RS&fAQs0p&G90pc'tBi1mHR>8cJLRROK&7S])?A5(7:TX-<M.H&"=h`EAT.;9<;GYa^D(JJd%LVRIHaf!]n80ad&f;9WU*H$3!aN['S&]r[j`>2P+6H-o!Yu0-=aF4a":r-V9`&/gIT*'jJi2oH`C=K//ltfTc$l]L(SgW<jbFdf^!YpF\R8A:+\6*,.@7ZSb&pugc9]Z_`2gI%\q7,+[AsXa)Qn4C.#<QGiLZnkUOA']aeOpAee'[.@$##)Gg*Lj"&>(CAKH[eZ8D#>X4$%6pK@GMfT#h2%)\ttEF:iH49`K00khb-^`eBP^iBSJUlA_gdRDN?oomm2M8e$EpTaPbqm7/[UZP^JWQ!Vp>]s;&'0#Q'Jl:i=R3-,8rg0J:pC`RZb;hou`%gT?n06:XdfZ/[9:FS_T..*%H]fqlj)g7+U=rYZ<$:Z.QrrsML>6G#hn=7l(DnO\j_8hMn&3=?Ap)O3t_B<V#=pdd([i6*f:P;N&Oi6W4):QWu4)\ZUi:@M<l)Ss)[BmE:<>6Vf:PBjiP+s=!Zc*'@]:]H^=!Bb%nd_L/qeQ#iNe,"4O<)9#Ib`GBIi2;aSdbH!6uIJ$'6:l.H%"BjNHMh/&pbj%A>;b6TF[YVu"8`PVIu,A3o:+_"c#F?&,`]f5;k\KH#S1*ZrX470A.lHZ]I1c8@f%[%<##cK>j6]nEBWeQK`bjD,ZW<9-V.%T`1,9md$.-TQB7a,sA7U??V=5NFcd2t/]HA2/KN#u%m',-/1\4]:URoQgu6)f.[k&"14BMPB2da=E/D:2KBAKaS:g6Du=C*OjOg)bgM$i(#=6'Jn~> +Gau0BheUt#&:Vr4@2Nee/=IhWQ;t@[au`oKi,1CAIjYCV]L\c.EZ?#f2&gi>B]!eK+5RdkPLtAmaI_EU=$SK^5!Q@Tbf""kcI=qKB>NB_Z4u`V]ZDH(N$hRj*S%n'CU\mI5Y-U6dR4uUS@k,KcgXU?p:SA`-Rup6Ha)+/"*QGBtj?k@m0@ZQkmj)3QA/Rc)gcE&W*SlVqFh'/=)8@:E7VkBqm\7AQVbNT(O+q+V6tepb*glH#;POWLY3)J,fbaho:Nii0BFVd[Ft%)`,LGT]N-$%aO2Hq_+XoO1tb-%I;ufD/IFGp_+%BU:p+(CipUM9?F]NV-Q_+[Zt!TgC<SuL7h,;WVkOtja$,"4AUXo12`hA=`1LK`5^@LPfc]28B=84hDWH?;,V1NeF<4g]3&F,+YACnMA/O/^%PX\e/oBW2sQ429lqKAG05_$0<OC;@1`faH]FQrT4R?k=5sNu`7#d`SaDBd9RqqGHIb`8[fk/iHd[QZPQ3AXk*H>eY'u7B6qUiefmY5Y8XjfniaBYEV"g&s0bjF,DC(S@3K`&a9RVNl<_IFm36]ZY9dJCYKBL)++U)a(-DR$`P,/Xn-B%cNr7e,RJ]/\82[SN'gp[E@45IAuu@,("2NX*:2@,D27n`B@3qEa@Ee!<Ees?E)I9]:5atB,QE2a*!LNr.pN."4^FYj9/G[b#Va1I^pd*KZX#Z;pWTike)V/PnF6f=+"q1\h.a8MqkBVk@aV:?,mLul1(`R]pSXd3[ESB'[@C#"NAD"7ID[a@#O[(7=FY8-U<aM8J.d/hem?$Kbe5&k*&_^RDAi/0/nJgQh'Rt=`bplUQuW`NqbXfK1HA\oCoC'bI?)Oo33k\4(PgtZYXg#9S%-Pt71^Pt&kckFe=ds^D;'W)%mr;-'C[,,4i2%mqGf[>90H=g+?WQ)Tiii/-)7Z=S#EA)&E'22X'\DpGFL#u!+LN>YR1+14#W$+~> endstream endobj 184 0 obj @@ -1106,10 +1106,10 @@
endobj 185 0 obj -<< /Length 591 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 605 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat$ua_nsL&A@6WI"Xjl4'lt2'b3B+Webu#H3iHU<$?WW:9P(QBI5j<0<o"1<Z.GD`eQ#LEut'63Mn]6"&k`JF%mhp5h-=`1SJ;#SQVbGn(KF"n*RYZ;D$<<(=8?\FcH_PlXaZPT/j`OjXMlVFoC;rDsQpRA[1rOoRua821%6t_k_Cd,^*i-3gm%JP4_$'!Zi-<m_E^Lb`Be:tBV&](KD:)b21Dkj%X!:)6C^Hi"=:e8>pZ+?_X4C=l]5'\nB0OJ"pl#9daH5R"RAN6&n"AhQ6P`h7SZYXhX<,)btKn-m&>Z_onD;4OumSEZ"rl.k_`tWPCqfm#BLWXMMX<,qYa/MpqaVrtLL`2FEHh:Su2O!78_'OY5p9a47/EjBRk-aj=Jpd%6>[a[.rf^-hs.#L#H)(<WV,@:!<n^'_pPub.#Ahl^3t>2=8IrdW'<$'\Pmp5r+8B+X4Z[N(ul?:H3tj@[0KA8ua,_S=QA%e8?]6B4[#F'@g,:c5TcB4P[E(Y@;Q&"u+iI-NtcYp/*@BkGu7XbF@.9AHh<Vg4!T?7*^]H&%[dk6?:PY^*ms7B*?XT],mqErW"f=B;b~> +Gat$ua_oie&A@B[GYATZ\W]'$LiXuk!_%cKg)apqE`?/8/(820pE_9-g60O20'$^&/8sD75"e(&;Lg&=$=lSW^b3G'q%!R!+9EbK:^IW;$N.F0W[i,uIY$jl7ra'AGOV8,!%,N)'S2G,(/Zp.X:!^LE`]I2k-rIg/Q`T+*,g9=,5^,iG<PZOb#Gf0pNQA5#LL53i2ZNuRqlZF]ud/lr#aTZ.D9/"6V['uQ$fbcM4m7A='p(+fF)4Thj?IITYR:U4Ip8c?S7^fSjp[ULd3N4#NU".0UbG'BGTRbR`.$BkE)UI"l(uI;e9[fp*2I*&CAu]cGqDlhr9VlMXmidPrD3#s,9O%IGi,"l/cL3nU`]Ah[+qLWV;D=r>S5Wl&8L^c>Z\N%#5k=)FK=k*S*h_3MH8>Ri)CS?Nbg;>dARWVfQ4@8!*]a6goF0'sG+X[5((!V)29:U1:0"5GgNHJ+n.*#mG0SWiG4tO.VJp"(q1e2Q(1hNi45g)Jt.PSe7r)[&oTjljCY?u;`8$2N\e5)o&7Ga@mVqrteS<pJ*P!A=A*;sDM9YfX*q,:cgOaKgiZ`0^-OM9u2^C3(QQ[l0\9%#ob5F'K&9`~> endstream endobj 186 0 obj @@ -1121,10 +1121,10 @@
endobj 187 0 obj -<< /Length 1255 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1273 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat%#>BAg]'RnB3nFQb8)([>\f?V0*]9EP4G8]$5%tk2<Q4pN`'kFl2o';Da3KbCA.?bR?,FtmLF34B,p$If"J2rF;FhNZam0X&[qS<0+827G!!@UTnofi0BqBO\BS)CJXrKEC:!Z2fSWC31":`q"PbiCCX\Y*cnLA^R[>0<<W7*0E:3Xjj=++bIn8'2ip"DJc'$5CaGeEaqh5<-lh4*(CK(j,i./V)dQXp7FY:-VpcXKW-q,hL:E1j@H3*jT@L*4YIUZ0`q/'4-Q<,nAcHse3gY21G<C_fJf)K9em@<;B8KSh[I9^Z6tFE?L+YA@Z!BrG)rN%pdes6b4]XW6/PK$%E,Db*V9k9/*U;0++nrLUGq_^*DjO[Wu]?I1g4A,K)jSp':;@$SVHUj6jBlO:E9llqu.XF5aOBgs-_O43Ad3Pq220Onr'/peBNfGPX"jJ$u7M2?RKHjSIBlc&VRf&9F4,AXu&?I^*Q:gm!H*6URD:[2MUI'm3PEJC"`':a`S^kjf/`?ApH2f^o2CPoOS=\h%Z(cdEDW>?5LTB7.EXNs>N)dkhY8<RLQi!7u$JfRO3]?j_kjWdOJpr#5((h/$F9D34:>GU@CgQlSGdo%dV>3&,3?V73bi>)EZ:%,C.JfGESb2H\kKOT?j#rAPi#"*L[RG)p?ql0<o:7O&2)rG(R[q91DcZ@eFGpNYp".<ON4XO`=NOAL1];]:6P1S,=g6bNhnQoK%;e0)/[P5i0a7rhX/G'Vf'PII<UK[s/p)"<cFU`0a&tB"A?#_WJc2^QTMCc:cYMj@6QYC"XdH`1gAi=>b%Si@;*kKHm/ASj)s(0EFkpW!Z=\P@8g$W<AtMu<:4uYLPCX*GB5p+TP<J5Z=&JRSlfQ*^Zl<VH,E:iZ6_uR=3I$V[AO^/[sI_-'+Zkd3m]!/cGA)qN_CQ]]"+i"+/.<ES\eR>R/LF)r6s*32HWg]58_5?R;Wr0Ib>n/5g$--SU#rXW$sm8GEYGi5Y=Ko7=)1T$.i`8*VK.+cXnJg$Mp5'+oeq3@OBi86Qo#Xp-(PnXYsSR-JpZ?[H'+Nh5Agp`2/6r4%F080T7\U[.^ph2HPNUFF@g_UC>-l`Jt=a!fRN.8)D'<!c5+O;<#9]@2MuCe&b52cd#G2uuSbs%h)t!B@u,JX09](",dXIq#_821IXc!WnbNVbT@U=9"Y;$g(e_$pbNEqE%S^Jd1o5Qdu%\IPHf_?G,I@0H=+FKbHNi;=%!U#=ZE8=9~> +Gat%#h/D%+&:aF]+lm'QJ;Fq2I8Br&+R-1eU$^4Wm2kCQ0J[3TPspb.P,<_W.?Y;m>E2nj#]_:6mruh0IH5:Rq"]+R^^M=uXNEsGC_nd]e.2sC"JR$`'0stk=RC`jQ>c#Z>mLB6X$;hK'#7$Y:e$'<7(jcj#\4bjMl028_NG:-D4?VOr5T.i*J>j*%kcH>APW)+cpR+e\RSC-Fj1:D/)E6+0>6iB:[?4dGN>"rhDLd*gBYH<Sp+$#%0L,(ft#Hc#Y8JnImXU[7h[Pre,82BUbFYQn"1Oj5E@_uW>hSf6jURB]oZZL!K9ck^sU75lfB?+.b$:1M17^nosL!5YZ\6*Oj5/00fm&KQX?;k!kJmGPFZA>VC"kIOQ;h?jAp*/4_pj*8="fhJ['M_o8oaFOk(Og?]*`'<.Y[;;f&Vfd@Ve/SfSiPHtk.sME]O]VU8C!nsFe%WgXCl#':H!cMH_6%*uDM^bb+oPeL6J5&skXI16UbeZSJcog"3<>;G/:rb(r'?:NV/iD1\Y'sC.*'97_oa,+g!`?A@<eT*i+l`+^.8'U+kU*(R*;\Tn:TB7.ESfaGPMj063$t)EGn_[GQM!ABZg4cCBpV0Qf4KqR4L);'+Na5T9c=f(2[ZanBFAaX!:AU/Qp:OB#nhd5JXKZ-8']"lbSataHLLt)IE)*_H35qNHa&d1C]R#"Glg(Q6K_'#:EgM_4/j=!DO^.L^VQqS2Vm;N)#`dt8Y.TChUr=]/%\2E9Q+GWTX=UEH@SQA$SFTFs]02]mC3TTtLI46)[ros(K'Orr+Y[=LR#)jH`5TIZMOi@)R%2Z558fueJs01h2c;<X(2"6#?uDLkJ#<*1m<.*M0kI"e!mn/4X;-X-;r&_O1:cGIm$f;Ag@_`n4k$q67);EZBOid.qFc$fef.fhNNFniHSp9d,Tqq6=IjcWS,"pQ`+1s@Q%*$lDl=5s)i?R[dje;)$&b?=92UkTY>6C#iuWtj3[kqd<2K'R$PWHr.uM\HR/]J4n%FGo;^cp9i)O9S?r-GRr^]6U.ok(+O<PN-e+=?eH"96rV;V5*9r]S.*dcsYmS6)6m[1eCi#]H[0/E.uj0h4R>)eKA*ioVA4AetW]!C.gWXYHa#5;].T!c8aC(\Z)D='gdQ8e/NID?i&q!?j]X8T9e@e0$:/2;VN<"Y@CQerV][@%GG=YN!4BK^A6^65%io?3gp<>q6d;[E,u`W,(M"+;ff2`!7RJk5hd=AUX,/acZ[#LaOJflM'%_L?o)6#6YDO`U=5'[6b7~> endstream endobj 188 0 obj @@ -1136,10 +1136,10 @@
endobj 189 0 obj -<< /Length 823 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 840 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat%!>AqtE'RoMSn/L+LN:1qO5jH:45\Lc]ie?oa[8%[j-7*Z/Q!]T9?hB21ak$&n[X&1nf?U5Mmo<,^^;9IA.&Mu$Oi-q0YdfoTgTk5.6t0D5HaG&]tO\861W]4EI^o)27*pP^mO`uFoFm$AJSigV=RCnRH)+EL^7o6YG0+1^M2.r7I:7j)e^#3r_Zbr^WcV$SXS(.4W]Rm]JR$&LR7u[fJmu(qo<&iAHFCu2KXe:OqmaYZE@@F=FEc[7(k"';T6>1qdX'_k812o]Z-rdn6"AHYShF83cdTL(q[k$@c^9LV.aeSX>=0(T&^lPVACo86a_U4VW9>G>6hUf+C%+QpIFq'V^Fe'5&Z8IroclGkFA+ngrB-oWi"s#BOrW.m*&DS@S,m5M;Q)UXsHSd?nI+F4l3DW9[HK+&#uV(R`3X0Ikk"H%Jl2+@QQu'1i8A$W-t.8!`)j&LNU08/$e!E<]%Qs,dh!nhB]m80R,e9VKPX5/^Q`!>X_;:L:,Gc$GV(>)Z:,am6i@;Oasa2gUY4N5iTkjccjU3h=l4'LP3,Dg;/LmLQp;j<nWr=]*#/`,<+LS.YRnH3/4fpT>r[/(a*cD:lc!A."QBW4;Hpre%]"e*;n031^T<c2JPgKK9+\PJ&HHDVr)2L'ib$'GuL8<0bB'$H1b8be%HlMrck?/;!^BO,,'C_c,,Kq?ai_MDKYDC[BP5^Kfh>!cJOgchfsrEj6>C^d3ZaA0:[RbV[kkDWm)oujc6!E$-!07XDNi'.rlsohHA3RJX?.YRW\hd4?PbZC=A`0U:$VO%#.N?T6KZi?iBH=0,"qb~> +Gat%!bDt%*']&L6Z=@JYj*)+]O?0*e&<$aOfME?TenKc*#DlARq0JQ4mA/uW:cJ*mI@PY3cg=*0Gl*=Wa91(=_Irt@r;nuUs,c8L!$*+7i,e%6M=^?,;'b_hq;m:%FVJm.e.+O<%m[W_E$#1CTJiO's%55.gaF[`]MDgUc?0=-ZeG"gK<]',hkd?1Znqu0Y^FnLH'3llB9>4CKG*G@FB6i4;O)98Il(dgVSd&CJ,1b+b/0m(K1k[iXkl2DI+,k<G[T[&n6tc,a_ED&T:%fk>[<$92';1`c'!b$kUH4;;>_Jn1"TmI%2B!`8!]%(]u>Yg5omNY7d8'L1nm8!CKgBRdLCS+6$DQDfH^jb8>9:emn79T0k($<b+4P/ED4F1I:*=;J^)_F&.a9.gQ7k/s8Qqm/ELSqN7g0M<8U)*lDa+b#[;[YSu>BBcLN.+dFF[Xgm`"B%K-KXdA'A[oh!Z8E9"m[[$&9.q%'eB):[1q\li(rG[g]mOY?Xb:Lha1RBd)Zr^=;4]c'*in+qJ!#afIYl6qBIQq^Lj_Kj,K:TVN+XM@*2Ii($Y'6#'XV;LB9D7FCYU;ugCtkr!k@-eRk"MH\Dsf]\9CqVC:i93olG!<-Q=1So2+*$I/h#NUM4q4!2H`Pn0U0-#f6drHd\OlU=h?3^h>X:56V8.=]9t+Qu5"Ngk5N$Y:&A\p?B;+<9T69Y7G'R&+j&/MX/lP&>IsRlYT"c"\EGeYVppGlLcFpPU0^B4rfb*?gGqdd($"V5*GLXePlJJG[q0<oN%6qZl$RH1a5M'3q0'4r)M&(>fl<iRh$!672ZT574D,1'b1%S01c$+6S.Fg]~> endstream endobj 190 0 obj @@ -1151,10 +1151,10 @@
endobj 191 0 obj -<< /Length 605 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 618 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat%!]5H@W']&EsgmSYcjngbXJ:k@!LB;=G/3sN[VGn9bjiB3=r-^#PNF''S^^Em-giLbh:j6pOoc$7d"%I8K@?a1`@K.R.;!^+U(-n-QnJ48nrCFBj)Z<.qGE3Ami!._%856qI#-]Uu=4qVVCc8-Gn#t,jMYbWK@aV?.g$2DFc=-Cd[XUcn,4-AYb<Q4sha!ANk;<E-%/Hr]aV0[O!MrKmIs?0;o(IVij"0D?6Q#4^`ht6l*he"b8*HtCTOW47GB<*!,&ohqZRuF5TJ^LO/BdCa[B;RQ>q%H79BDqZ9n21XGraMK6QnGJ+LN703mgBR%KXaMR6/YkS8tf-uGQd:7o2[He1^V/jIWk$e,3amFYF*SO\6f%"!YSWDu5S%J#\b6O)8p7j'e$gPe:"!LVgjkfFWA\P59_T`QCVZrLs;tA&(9Y0O=qj1%GPWrag:e&;Yjr<(DaAn]*3_reX$)7W2pA\POS@s`JF"g^L1*;qN?m;3"kGde:jE&Pp?k=g#6*%K&4k;H8l'"?meKLn&k5A4-JS@;KZ&5=.k!RLC!&t#<H_Xno$)k3ZNIF?@naN:6^eWa%?Reqa2?P"hPKK3^+/U'/Sc~> +Gat$ub>-hH']%q&]IPPCp%:+DJ2E'j;5oga+u[e:QuUPR9JZ9O,l%6t%jhdS9L.:`NfVMsk<?'/i9MsBW.BXJ:'4+o!"!ci'$Yq>'hJ[r,k6UOSGbu:k+)>rnMc5d"KB#k5]6X5ommGfBT=ZR>NS@clp\3d>I3(TP7&`'94s<El$iBM<-qho^T0Srhi,?^lM^(9*>ohBl7%Q.+f([In&`_<#DhQ^cj)0gTkY`pY=4_h*&,d-->[?D"&s*RM%5JdKP"DId$6a[a6AEJo#gd&kg7)4(o<H>,MbPfYh=J8MQ3peCPX5CpJeC=m-g/$]f?s(laUI6K];$"N`8lV`<Rq`3VFr!4B`,,Bhb06?HkV226.'J+I-E^r8,"V\NX]cdFN%g?`u=kpS'H%0=$F\mpc4#)mo[ik"mH,.)T*,NS1FM^9-t3Qu-%N&1A2Dn<<g<q!1kpJ$a2CUI,M0UTP!r[2B=1/2&3:F<+KPt)O!pbpUD_TW[7`LGm7]a]r=2T!r/4KY9,6@F_,)2+_'<6LVnBl]V(&#esfC7j#=o9$@5!_r>i_D2W#[DTbiVs?o>7'h&C&SjoUr!]agpD7,CnY>jTd=cXh-kICLB0G@+m:Uf5~> endstream endobj 192 0 obj @@ -1166,10 +1166,10 @@
endobj 193 0 obj -<< /Length 1028 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1067 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat=*>Aoub'RnB3i%]YqoaNU=2CWLBeu@rG'Q'k94j_+YVA(d.9CqUb^gKONV3>86NmHP=3VJ_&]"B<n@K7<q3.aUV63,3)$iUGFJ&fA@iPEJnT4U>]^cHjQf3E+>*a_IXjtt+)$V^r'c&plTt*qYUu9p[@:H:%(n7DVhsaGJ-$,Y.?D+`)(J)"u=#N,#8d7iq+m9Ja+A@B;_q\GkBpTOM>H?lRVoD>`jYB[AHH[OaHb.k,IGK$C<l9YlMT'JXO16Oej`K!:IT"mLK@P^KOfq1k@#WS>-<[^$j[i>"gi7l15hcln:DR6UpX4;8/3.Da;.)2W-$L1Op7B-3n%'7/8-`Q8VAYGi6o!,VhgAa\e"K[+.*nI4+,[J$0f]k6D68dGe4u=B+0)&BGaq2#&hNYf%&9FU=N)Rp?m8'4[#KLi@rqG%aL4`mnH6(D2cVSQE!@"*_8*@H3q+)[ca.k%`+a74Zr"gDZ":gKH*PJSr6/,^*,V&4I!KP^r(g5/&Ih?/*Lld=]WP=>k6t%K>"dY:KB.9JNE<bhSNRWZG[Kd,@'rVi6,?8%5-rL4ML5sRZ\rks0dDQ.r*]r"eb[I7&aJNUo3*2WUSqHH)Sned7$G6#lYN,g&aBbP'!4Pa15N;hmttSi*-S_KCGlYYI^i^\dG]COpOek;BQHE7fL>9<9OMUlR;9pb1G(FK*.g/i#h]JWdC+hVoKDZrVYk..Zaa;ET16X7u9c\Tbnu#79n_cOsNdp6UBCURYb!cPGV80K1&S#eVZk"H@6;<mk.T:?+NnO2UK@CqG?VC6*?a]_\XH<eC6i/!YK)J,crplO>K84a7V]8aA&g95OSHqk4RfW2]ofk4o!m@@lNC1>MHYiC?1@5oknP>F"hRo\o$B^oWjdT9W+*;F/B8L>qmOmhatK=h07N[6\47GBL2cN`23tD'7Q6c,he#15D@5nn,3W#FsgS-#XH9#4a[1l:]8V@s-FFVbGWn)KL*V;E:e!hjnAqt-]/>T[JqM.b)Z],<5'p9;(hkL344Sm~> +Gat%"gMWKG&:O:SnE<!=@5$Cc[1Z&eROV$1)mtRg4qPA7.L[r2lhKq>^+$:Nb-=AQ9B;$L,6/_j%Z]FYl[XM/B%uERM&>fU@B=)9E[2kY]X=k]&KiW?dgBP9s9f=MYDh"F9QE,!sc46Lron=6GUOD7P&7K6ZnU3.AQ^(U*@;+10l#5$L<_,Hs7N96EL"BYsF#&ff[8j6==L:o2e/tZOS1UfM<"k?pLKAbkERXh`?^E87PXV)?S8NUBrhTW#]9.6&+#$.na>b<L.I9TdQcn["e(2T*5"_T5<cFCis"g\o$#;-]b]OR^/sWV?q&Z&mk<Sfs?0mNf-hme[=!@!lVlP@`N%h)uuL]Y:UMl2QDWgb@qrm@Ng*s6N[PL&ZQ$=F0Fq#A!IYOM&9uG>stCYAjqKK$N$+.Bf%BW;D(8)<^.87p"77683hkE/sS?fAB+?)V31.G>i/'F*djr%T`A_:8-fDr*C3dBG'=qL;d;AG-mA%+-@I$UMQEt`B+`q<O>uL_<TOK\ND0So:ZEV3\pHS?Z-RVCITXBPn3"&W#`%!BgS6OkQV!+mZ"m=-V5*KN2hm,e1SpVb6O&0>a<'t?>pW*iHim4^4NXeG!?ttc&7#b22/9.G)QiF5URT*-I3kqgdk&6@U9G[l8Dr_`L&_nCC>:Q_OM[N=6Xh>?M4'O]Bo7gaQ"%NB,+:hHdj#d:DoAGE(o)D5QG"Zh7]17\B=Sjk1B7h[FD-&f8u;Pk&@O@Y*\pN8$j:B.;9WO^C#=j<EWT,[o?J:PImU$'"NBp(<+gLJU,%Z`Pp)^)Ub8K?\Jq(Xa7P[/>_1W%3Z8"N6`0@,nCIr3VHpHX4tWf%_%Hp%-#sXPQ!Z:OW69nDq-dT&5>6I-kCOP0?"3k2+]\FZa\XMoa`-FU`;%1[!lt/:f^o`h;H41QRm0G9FM+a<c4?:!g+h=.-/j;u-u5/jO51[gT+nU&E`]li'""^Si8a?,CCK/gIlsSH5i&"$c$)cXXD#F]u=s]uf1.\m!LMjjg4l+I#c%3E<r<pW8CRgrS4_O7!r[$1ieA+9)Nf9d)5,o`"rEEh$8~> endstream endobj 194 0 obj @@ -1181,10 +1181,10 @@
endobj 195 0 obj -<< /Length 235 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 173 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gas3-bmK%f&-1Yc5/eN7i&'c&NdDN-cln5=(*04%&5(1UHMl?Y,)DW00L+GgDT-(a+=:WaJuo0l8OssG&u7/o0I\8Y^g:Cb'T[n4L:V6EEsPXeN.rcm#e'DF0?;'aKK[tQB+pBe^.5rSPV^OjT"oL'31O%W/$@>'dpXg_!WC0_B>&piCd`0u?H`V5T?C(%`#W.PWi0_!AoR]e2V"c*Wf!V@,ms=(`n<k.!i3IsC]~> +Gas3+0ae%;$jGQP^ETE_`hZ>4hKkiIK-4<2d::k:5f,oX!d'SP3%i#pc=&h-D3%I=pDu&#]`'oENa"c7hX4PGaRlQ51(@2BNnRXgrK4M;l,$@c<O:>QsgMr9q7+n[<8sI\5Ok+05e(J#)Y)D3Xs*e[*aX1o)5ClW8B6C;hi4~> endstream endobj 196 0 obj @@ -1196,10 +1196,10 @@
endobj 197 0 obj -<< /Length 1072 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1092 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat%">Aoub'RnB35i#'_%1ceG1MN%V/X<c"8Q2t//:2>m8XU4/J8FVfT5S,1,c!c/I%58*0)j.?I(N^t]>G\c+Rmt8,4Ka`kQUO0*^kS7N.V\73:bW*n)s6l47I%SQacr<X[3O&`bK0!;$7MB%(N6s(&-0I<p>)bD0U3jq']429AasZPub$C7e=>-S`*cnqq)N:S`Bm7?bB?#%KWMk.M,\9`-le+<4LJ74ncVkOi@V?#IG!5:T5-k=T39_O`T?EAUNnR8-EhF3+<dB:e%j<7MB@7');O\6\3i+4nk)P9khr8q^7Y37#HgO/cElP'M.SM%u@,SX(4NVuSZ4!(nFFQMO",]OC7ZMJ#lh"_Z7tmSa$/*3>!>2/l#u+egMT.QT]QrjR@L<?XX-hI;\D$WKlB8&jp7.&sV'i1[Q;?P#,hRfdC@3;b-d(`:$u4,E#mk0aKX!Q/'fk70:TTcZ[#7!cV\tn%'JP.%@@+E[rm'f&g`4r^OeGTmFH/H$FLJ`sTD2V+eq&<h&MeiY`R!2H6I#2j2SWnMFYjs]MB-WBMIr"4cHJqq@3Mg>P8(%2HH^0S^)AeS"]CT?Oqj>Nd`mA&O'0DHU?E[)mO0Kl3`6]!Tc#V,L7g0k-AT_?T$h9QbNSbG!<`E<>b-.;W1k\l?@TT%7oo7G<MQ/?WJ;0W,Z7:$:X@O$i@73ADFGcun<#:tBQLBQZrLk=I7aP+F`ZY`k`1=fIik3I>V'(!IFGcrirGgV*ei0'-]AO`-'Pd90.?\WFO@*)PApS?lVi_%L4lpH&pa$J<&-;q#!5$X=pkZde5L4S/1^45Jf=?WE%"\VkkY8U"0")jJ^X&Ao;a8LhYOG!pg6,md`R`r]b790]nlQ[E8TJ&q+]ke@jr#uAg$Y>TAqb`''l=N0`+4UQP%Y]PpUe&`k9pa3hFlk%%=]kXID>0iWh27O3j>t@qVngp'U.boFpYZ9Y:;^0g75J_`@)f*8XMjJ?')KX-=1)SR!p4(N+"ep>NDm:Ma-@cCL4ZB7#>4TE`I*4>C9Z1Y/cD3!I.MG.s[doTQ4o_4#Tsq>lFuErNOc~> +Gat%">AqtE'RoMSLu>+nLl$&+G$nV:'-8DBS@8FK9nW):n%S8L%X?`>N-o$)l@;6O6>PEqp'D5ZX1;X`?'s<MS4/@#e\spH@c!e(Ej?7@7!7";K%!QIOss?JR<[e^%H$;76ML/"&c*uJ4OO10`hrA7Y;NM;/eaJA4$=#[,L#eo+=tmQQ(T%-a!%"g2/[-XDnkob:OMmPCH$D",n.1P[Y2!0a*Hn!"b-K"te#ifQu9k/G.)]Uj5GM't7U2sIp+G^,HrtguYZ;^"Q@os'U9aF+]EdoPWp2hI$(i(o.!\d"YMd`f>_=Lns1qo`4pr1_E;U-^/lb*6?;\TFAMIn*0PQI:A7f-BUNX&lI3os3A&djK>HEeL3hqA"-TQ<:6PBVlq+<d<bAcg?m$mV<ChE:M*0NES2<DK/cE8(!2eJ1mOm$&<us1LEE%IFJ.)Z*HG>5f"'M"#.]"SI$F7gY!!Kb=``fIc-7:%is=j1me+V4d4fZ\L*NTE(cg=o6$E,/C>]"cXs]MQl0mQ@#pg<kIHi-B.5#Xj=Uh3o\o.%rcQdHEZ17cbPKboDX&hoQH-)1+b\No6V:-(nR2R,C-D/baNr9qm6t^tnaJg<36O?t)e(`"(>3f4Pc0UTNK/!2pnWS)p5#NWM-0bNcg3QGjpu)S[a"X;"p:afcXlR_^%k`EmDae2IjI.jqTT1^Q3aPpgiqI#oa__B],GF9g-OVp7)X/Dp!4rC>anNLqZGN'Wm*0^]?]K(CV7Q@@Vkdik0=b24&`kD]7`ZXL1?7'Z)d9?6f&Q4LKHQ"?iIB"Al%U*d,c5^-eUkL"o9QJpRQGHL9%+`XPHT!Jf)d@uu[KeWdfTGFpaf6kR2"4R!iF(B$85'/2?LI&t2'ed!"Sf#HIHHTeu(/C#+_?md<(cB*rU!.];9JA!pePp4Q#U]h]HnCG!kf1*dgJ=/$VRdh6Zf!=T.3k+2go'+A&_+Go+H'&aU*j=F9]>WgmSVE7pR'TFs*gK0P318.t*]m>?b0<`)W,#A5Be*OdV:<pR_Co?u0t,PBd[LgE`IH%LCrip5T94[(9l+J(^IV-Hc%3I`?)>HhT%9`>,IK;r5~> endstream endobj 198 0 obj @@ -1211,10 +1211,10 @@
endobj 199 0 obj -<< /Length 1013 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1023 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat=*?#Q2d'Re<25^c8$iSdT%UePU3<8&B?9hkAfm_L1rAP.IRfp[CT)`nlBKks)<Crb0%guEb-p$I(qp'uF'!eIgU(4ir#5VGqUoH4Lj@Mhpl6KYEEhY6+JZ'X)!%r_DL=]#\6`i<sn+p9k"u<4hV=`e;>P!-bH3>!4WdP7Ds@.:]P9?*DP;Lp[@7I]grNA?lBfJ1dph9K=>3&AiZ=J2)TDo-9F5*TP9SVW4.+J,7$2WC9lRlh5@B/\BgsX!m&B@qAg<gT#f;Ce,OUUq/RBc5LQPo94An+.k2!o4S;Q7kK`()4N9_q4#o_O1s.C3<_24in!i7.D;1sr)9t<FRAQCa[LEYSa^d?<CVSDUpljc(#?B<,J%b1_Qd:bWeg!&*qAsLrnh/);NV.NcH]j/"GFm>N<QI-oNbPr8o]/!haRN4S*':Y>jh=?&U5a%s:Y2Qb+VY#N6Z_6W=iFrUe7kN!l2X*i?tRl:Y.d!M:)DsQ[7E*aE@Xi*0f^*A2^&V5@,Ap_Y71n.".T<*LFKYdk5\q(8UD'H@b8`gO]",=P_'HMOa^R'AF8[M;12$dS]?$L>F)[(kC/S\1>QPk<L8G(]BMpm4^RGmQt0=N3$o>-ZuoH7q%aH!2E?OI"e<%@a1FWqX1:j[Z"j=&Jo@f+%$tshR*to`>uF;J7bD<QHg5j+L/5lqe*Dl.B,B?sZ32>E<ijc0m&SYd8JI>&[XJcVWpjibbqjW:qB4>]#df$>VK!jd@]>8u`\Z*_Nl\uGL.o9(3'Lnk//sic]>"%:Zp"coa*dfH?r_6p8U(T1D+ot!oicq'nka!33mEmC]1K$G7X#>NPj5Vn3es:(Bb\X?@-878+c$Ei_g&]'q_Y,^3!:B8q_n#Ad.dL9MmZCh455'be)?!RoCk[)[b="gfTkRdpZ!+-a/Vo5P_'GY%tQOfpCKsOCe7_4)CeQ%5`"2?MlR^9Co//&5]4#H5rk.D99^F`G#7DIcA>8,'Q$Ii?""(GIK%\1_Wh`-L-~> +Gat=*gQ%aW&:Ml+=Sn>JMX*?#WKhYWXOKjJWS4^49cmJHZ;_-,6e^A2YAGlr6:+nM8;uU!S2iAh_sMd?qMkXD6P=olZ9Vg,^]<U(".qg]7*&dZ3*79<)i$[OOrDP=F\h,*+5R$BW'D^'=/e_!e#rA&"/\Q-,'(&;I5elE[TBpn-CrlQQ&8=B<COOdOeEo;<=n#]l'[0M>h(kgidYR'0)4qaS[3Q2[7BX'I`]a3:\M=K=lt$m=C5%hKk_8m*>@O;<24(T]Z#F;69?6V,rR`*@QOAMq[:O-**d'$`W1%L-YrO5qZ-23<5gQ,1+F<q;Vu'=-j2*AF/p]SYeoMQCcbd3TlLi!a+V)[6#F?<a!"^>o8Ti@=1/@^IJ*qBq+_)e>..P+;8iPQ\f#a@dLEnX/CCcoK(F))T@=Uaes?S>_98CELOP9g$WcSNq9AhHYeoj_@E`FgS:8nj)f@A:X<$n#mN*plLWlU10/*dV0Ou"!K:HC#]"[S_'&UD-<B77;4*XDWUD"8dEB&?-i]YBfO$iY6b77,G5"fKX4on$@NmPPW_Nl@c-M:M(<J#VHQP^/'j^H?<6L.D=j$VI65`?W'm1Q$Z**A@fssZ;NQ*c).Q*C3+6`EJ%*jOp^#QW!c*I##`]D8/r.+_TWNkqUQDZA%ojVp-<3n?tkd\E%E2BqA%,tc<4_lfoK;l:;1q4q2^#sT0.:s;t%kY[0Uh0V]%EhH=2,ge$_fpb?N6,TACq>3:<o:86*"X7WWac29)LD";Rc!4L_$Kh@]>T>Li(hl&iQ<"s!r?1`"=reio5+ameWFOGW9d-i[h3o#_&;0)L0ZqjJ>)Sr6RbM:@79%H/]3`g@`qXC^VZ@r9Y;t11B4;/,bMD!09@?(Rkj*4Gn<)%N.J9`*<"]?Ff5PZ1LHYLlAi7\FpY[&WK\DQD9g6@1@dqRZF@)(%cgH!qs'I.dpHB:1N"I[X7bIbrAA;!qduu5B&A`";\C@6c\pQNGb^iiFE4#N0YqAL$.q-d'e\PhPmrCf~> endstream endobj 200 0 obj @@ -1226,10 +1226,10 @@
endobj 201 0 obj -<< /Length 687 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 698 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat%!9lHLd&A@Zcp6Zheme=bqQ'0]]<)KG@UmJ(dJsVkU`(XVrqB,#qSnl`FW0Fc("HNG.<N`GFo`s)DI&s!2J_-+RC/$#fU[Y@0'>!'^a9AX8@-SYL*jpI;pZd#]<I&6>?j^2Lo*2bD,h4]+#;J/?`l0NC#,[>utIe`?,I,=13I:haktIKJEY"GV&TMGBYiS;(9<ULpe48;$-i^bR%s.(il)\P7n-S!_Sq/_8@_*ig1NG7+Vg`BP0,.+shK8:?s(;3Z[Pq,9nGOq[^u"M9k<+W_5_eY!HjS^i,+nj3Hde=Wa>8?kepL*FlhW(V[lCUFkZY[)iUZWV(q5M5Cr6Lq)\1W<'cJmF,D>o[>-eDs+ims(nuOe,-N:jVTjq@8gBpYcN^$f%&Dsq-TjY5dZq@;kb[Ji?K,@"`Xto#*=tW^16"c9Qd'`@$mR*iUEdX,7%Q$I9\I-]4q><Cmc!jU!!*)ic*o,!0cg3DT5Fsg"[`G*G9hQ-&8lfX6W,b*KIb94P1oP1V<AZ^Vh+($rBFIq3.q_IgK1jl5IEB[#-:5R(Z8oI=<%mk?qO>2YZ^bA-YK[l*O,iV^MMb9FV3"g8V]18aNu2iiQ#UOB'?2riiJr8dS2_E>>N&ptbisRm//Gi3(HfFsWfuU,;W`gd]2@Ooq3/pGSBnWCIg.hKCe%*T^W99XfW~> +Gat%!bAs(+']&?q=saX7l7K8SB9LhOFOJBT6G$sD+BZRh2Gh3<q!T^S2TXP/N]3,KO,hMr&+0Pgbt!ME!if*/HPjG@"C_0P85[/nq?"#<.+k9_2ilqKgnLDhpgd5'&SqP#kPua45*24b@\cG/_r#'gmP^P'SgA)^MHdH\U(4g26)j-nmgBe0VVd/!*e2*q\Rc=)dGri6LP_p+klX)"F>&4j9O1Pl#`"e5)3!t*?bON>h^)#8Rr3Sg8@sG3['=CL'CR!P$TuJK+g@JVtDLQg?3("Oc^78m5sXJ`/XY><Qn&L6@eQ*$be,tG$C/2AXu,`^__[Y,c3))s"3$m9KArF2-`rb>d?.Xc4li-Vhht!N*>^ZQc4UMo.LbWK?1-$s'7#"HLTO4E6"o;$PT#(KI^#1d_Becn3p2A5d6j&-`L#g>f9</&7:&LJW.MV*HMj5XpTjn5'&BI8KQDu"G,7Kj,sKV\de[Ib,@l%.`p,ldDS$G9R."^-VesCa<=S'BC5qErb>;GF!-\GLAeF%9pESQ=h3s-@1?Y<Lu6IJA7_;1>K3qMq/Y%6k$nu!0_D^D$=Y>bF56Cp6Y"p.J)8N#EX[WEs.UeR2"*p*nhi0s+bUeiqC/Ce@=:>CS8',[<oYPY"7K%_F_p&:4o>k0f%)?N(_h=(]_gVDd$?.C)g@gj[e=R=9Agg@;a'5,+kj5`~> endstream endobj 202 0 obj @@ -1241,10 +1241,10 @@
endobj 203 0 obj -<< /Length 652 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 667 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat%!9lHLd&A@Zcp6ZiPme=bqOV62-<)KG@[$ReJ[Cq[(0MoPbo'a1-'"m.18%u'[IIh(-]Rd[?qXg$SX<7R9)Bk22(a/jr!#+FG&ogI<!6G`K\p?%lHOYFVjI8YZJ5M@7&OI).8Im6CGog%`.p?/teMW-hn#fp7nT[fFdl-5n1EHeZ(eDjHNF'rpM',XcJH+TKrV](!6to1Y`'9IS/K?I.`WUb"Z%7K.IoB6b65>BO<4YRa^(d\p?>'MC0#4mcg9X4;N94Ef)7XDtL!siFpjD+%([.O'CZ:BPJgNKV:at+r?3+9c5-@pV1`"r+oQeHD&E'$.GcU51aL*M$DlkoSM6c`;o!8.,3uOD%$^'BG14`aGM33odkU0X1bfT$*SgR'a$f7!bcNm78op34$\W&\6I'.<o#3MVg/Y7*MmLUILk\lj=jL)b[r,^0UZ,IlGHT$,J4hQM6?ff=:F9?&pH9jW0.a3nb]ZlPTUJ,toitCVC;8I:&,YLt2Dj5>:&W/&Z[,Nk+el0D^TtA.gKQrg4q-DcA1+6]^RV4idc6BC'9+-$_cpaG]Wh^nQolXDFR@q,&'joFKHH[mo.!d4oXFj*oUcGE+nqbscFsEX>ED>3UUt&_;(tO:hA`AQ]A9<F%JH]1V#1ag/:kq~> +Gat%!bAQ&g&A7<ZGYAV$nkJAq!X-5MDRR1[?n<,g85i*ZD:*5Oo0X,LTQn[V9hY9E&bJI)<j?UhL/jh.%gTu@Lo6)7hBhS6&G_51)(9jJYG=(EV$.'jqdn^d:\4ILg[^.JW9^sl[fNn-q7B.H:SZ5cYQdQ_U!._:IVt[jsR"*?U^inb'p>ef+-LNiiG+^&C*>0;?@?K/NeK/Gdu0Y%4R)>jKD;g##6:`Bi7AB^`DQqhA"WL16?T/-fZ>+C`uTXBr,1>N'i2O##cY-SencO&j.70c+nUI<P4Dh!Ui64jX"f/#!Gq09.H6E.Y+`J@f97fUK7]?)8YXKY%Ue"iWj>4;%90Wj8b;W*__LH4D6[[//qDWE!OGA1F*f"]J,RecC8JOpfJoV\9knYtT^EV$O$%pEUK@e>1":@o#37HBU6&OB([d?L-;k*=3>`Un.F!)l(N3%rM,DKIaLX`CDIl)l\lph^nUK<.9&EH!SC91`N3gttFTRBp?VJP;e`;*Vo_Og*#sh3sJ`<cRJD]3H&6Kc!3sr:jjf)i0nm9t?D$TeU&\Y@!W13<m@^J'elV(%4=TX-\f[gnKuEoolKf\um^:4j)l<q@)-OnYdP9/QNF*HoAjGGc0*%#Va%hL.6:kkrZMmcuNqeBsGp4'!-hPlC^ukC-q~> endstream endobj 204 0 obj @@ -1256,10 +1256,10 @@
endobj 205 0 obj -<< /Length 422 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 432 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat%_]l(@'SZ9D`>q5mY(%(RN1dUHKoddp;q3%e%ZLT$Fe#.D?agN4";HNp**`0mn+o"Mb37fP!LY/@ZA^JR,6HMG":2ta;rA?e_*RMJIBq/mC'l%*?^rVMK"\5Ri,ac2l4#Q*mWNTt=B"I$I&JQ4Q'k>iVWhIP,`[L`"Bj6cZ+7:j<d)<RS0Q1'Yk?ac2)62s-k^qu2cp'(';DYSi*`)14BP*di#I@=/*Sa>`'!Ws*`Z.+l<pYrhi8EZP,b2/k2!I1dclglYf0Y;A\K216Tn%7t+I_fqmdk/2f!A[S`Z*<RrKJXD2P^;O'Q2B>')<(hHpHchhU/Xuaa,(I$^iU)=7j&M=-6=*Q/@(RF(loH^2Ms/>j*8mEejru*t1'U7![$8HpSfi3amKdA6MBQOZ&Y@'G5lLiM+l5?~> +Gat$tbAMqd&A7TLHV>-Y[10S'R.PBsU.CR5WU575P9M;""`rnbQ\5nP8VnoLZe!FIGh+DikO-Fo.ZjlGV%/'96\3`/"j)jV#WW*@6aVKTaXZ/H.==DQ>dHCd;E*+$Q9a-^5QhLl7iTHA=50jHPbuOo`nfgG2QE-=_.EPk4*bI4g1kM6P3^Q7g779A$TTP#'RdOBlZ,!pOG*aMT5h/KKhic[4@]<m:J!8`V_Rp5]:DXmH$VX].N6lj.[)(2Rk31#A#0nJ2P:@81^!Z-s==b7P9o5A-9tF0^VI(Q'Io"`S))CAT:_M:KsZ@@1/i&dhBi$MrW+LTp\68WmKS4l^t6%[*hO0mocA)$."qN\bK6NSBqX9qg';.kI^PfN]WJq,7"7)8W=&\WUo+#U1'hddC\,aML)ZYJU21IC_XS09)\mqQeWY~ endstream endobj 206 0 obj @@ -1271,10 +1271,10 @@
endobj 207 0 obj -<< /Length 1678 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1572 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat%$=``U]%"@rSd-O,h4GX_p1HXu_dl8@l2YK'%CaW0U6*]ZV]/mScf'E>3nrc6YG#J2@J-ce^!.pk^=-K9E*<V)<102#DA:^@@BhIDY\c+'@!Tg'Ht/E[IpXe%P[5=/(ouP^Q=jSuC3;E3cpks>$HK[1S"$@XbX3Fa'eQQte+WR:/(4XtY9H#l^d^RQkM$Yhq$uU_^88X8NCF?cp>t-2=662)*M_M:'ZYUfY(+0Hmr"uP[gr:J`DeVj^8dU6lPjlPZ?-*<f7CF%Cs8!+\RW<*ade;?E^P9;qN#@ZAI>Foc.W!3.!A9OlXO+U!dat,hCS_rrAie</3OSM.[9@s7mJXrY?e;I04kg)ko$.Uk*7M;Pu@P6lcF3,(\h/?.=2/,7&BQ^=pR`j(I"0U0Q$Kpa3+"0f9<8a15gZ8Tu?S\b;T0Le!KjJuR,nB:cF7cK9*KB:e+/H<Lo2k<nhc9'r;H?A;#dubsis3^9D"()_JVcaLQcmoOhm*"Is*AkDdt4/o433WtPirRQkW1Wm]KeN,8'=U=+0%<H?L=&]'dC"4_48WDX*,%<_0_*')B2i7]e2<"i/@PrK86/1+L<b=b^"6^"]4lCldRsMoQSj(F2Yk+FJj*Yi*?i4LgV@PJE``a(3,6&Es<<80spQ5Mr8-!V-G[/fO6JYcj36"MkS-ZBno3*,`JUT4H7p7:SEb6SgX_'0gNK^m,8Ia$.;_JIkS28TKn,`[5BZKndZ,8l23(/i!u`0k>ndkDknZQ89P[W6X[Emhb=>i=iLh\L#W7_o%cI(E*PItHiGfrXp0CP+cg,+gfg23Ve.o+ZWhqDYX_QjI@27E3g49KBb?tDWH#94;Bb$Ql[#h,WXe@IT]nVbB2D.Q[25JkO?HMGR"D!gfq*A5]R@Y`3I4=_o5Cht.epMD?;B21B\up.WNWJ:S!#YIPFaSYJ5Km0DYU_"'0&?Wb58S''$$9,:#Xf"6`MLtZaN&F%)J'YfQ*sAp$;&jG3)PZd%-UEWIBKnNF6'/oG2P)+49r+#Rm#'b9fST%(F#4-\c>ndR6Ef07EUm;ScPtA#6L#Y7E_u7bWB-pmsnJr<Euo1l6o5!RWA$hdlo&)7UtJ[n)S`+Xpspd9h=-Pg*PI4o[TG_)AS>gg#Y4H:YD_D.G+3>':IO!39bT>0b*%Qnd>-TUh%bpg7mV]jXEu:UT",*W@=iI5YM[b3]$"TQ@kQ![Gi_d1MHo9Jll"-RC3T<>V'>(deBa$<QiJEdft8+3P<@D:f0^KXk]M+O,h.0&,JJYT/Gk2?3BPHbA'LQQYVpW-autVU@MR:?YM5i7".^&9p/!a@2PUl8!7K)SDC<Hdksc--M>i@'phlrOGhQW71jNpA04KZ\RZ&;fB]sgjbe9(Q>uC%t-N:/OkV)Ub@`/%X"u<X5AF2".2<7F1=Y#ob/%Km`<>f?`kZZ]WAs%hfV6Ufmos:bpe<MGm^DAn.CbZ>k.KgjJGk%6#Ojq\9cr6:]eWj=+T<B5c%WG%urE+V"g*Y^qu,U'G[&r#aNl2n^M)7+sFIlb<2/TeU!,c<St"O7cWSqZ-*-fl"jA9_mthO)5ulb/tpSkZ`?WnI`e+Dh=t@L>&^ccpNX[[MT/J)eVbDd:L=E*(C%UC(c&-@^,=8djN.N_qT(5ZO0-=Ad(X'RoK$et[dkl49F~> +Gat=,=`<%a&:W67+S*n%&)*1>E_/<*!P+L((U947640LQ"%B=C-9Mt`ER?f]uX=tZJ*/K1TR)4RtJ&]=\jLXZOP)FfJhCYM.o(J/Al"JQJl7_)C09a:L%D#)LkJJ@7m_^^Q%pT9Zf4DP?hQ_NIZ`Y!V%o8CeIC5`7893Kk3,'k&FGLil[WsQX?5"0_U%oZNuU<YT]+_I!5WEhZFn\3slrd26(%lRJR(kQ&eOKoL6B53`=Hsm[]9kZ]K+*a</9taBK5ci%mPK8;sla<.=]$GWu(_9e,oba95M"J5pdQkJ=kX3*1&\o?U"F`$/T(MD(#9Vf3rF0%3h*/MiSn36oPo$lXD7cKj=lTbCNdU0nfVAI'i>o1&&-cP8fF.La&k1l,-u^bn,rFA!plA["q&1k@PqL(t+nca*B?MBd\1]jt&h6]A2G^]#4iG`6YMM\EED-!$Y@S9_EifhY>Lc]bQu>4:W'^M.<mq,27CFk'W!ggVBs][u[Ef4!5A1#6JNFsCRNf67:/+ho2g=$g;_-+#A*/"Sgd\XI0_muC;T7)iWe-.X+ql2K+N<>.</^pg6123REAL\N@ls3%31nQ?-/N>HTX8^85C?`5a@QZ\r/o3s^q)*@\Mn7\dPhU/cVn4C`]D\pXX_)<I$.^UddT(QWO^b\tVF,*TD#)bGfMC>fY6R`%j:rUbPi1r&IF+e)'B$:"f!`%cRpJj->ciM,,K[EC+2AH%fPHd44@qlIigS(AG#oKcf%S=$O&S@o1=7(u8l7Fc(BM/9f[8ppa=NtF8*uV>HCcDS]B8K#=mO[!_.ahE9u?9F_+fn3"?]ChCVju(2J*N@G`\5oPb.B]Ec$7[cU$coWcKP`]Lb!E25`r>UmMGA$RNmZO5>W]-d*PkdhI\TM^dO*TbtP3f?tKe=eGi0`VI[!,`U6Mn9k6K^JU[f*0Olb5CdLY#6lImk^V:qVXUbdauZ70Q23>]`GiAXPgsoWl$)BBu8hA:&:61OiGCDhoYD5=Z*SVC<`s%S2RddO^8l12YN5F"jI/Wdpo+h![GmSE!EZI(H;6[7]ot\gG*IkDS'kQnNYaiFNpZm?^A8Xg-/U(Z\g],g:(udk&.R.7MMDf6Qk@BeJph/WKVp7Fcjdc0iW+o:n<#>h;=7ikHWR[Bu<\Z-d3$8JM]#TqUn'YJ`Sk-Y4u@2]1]YWiZd@aW!AdUWmWra-?L[%nW+o,e`#O#j?h*[2+O,FQB-N'?aLMqcLR;3YZ_IG^',<0/9QKDK5U-dnZ[=el<,[YrHDK\O:hLC%DP`G'Ga-9+YBS&U?emkFWdPTZZ_rjHH**^OC`SCq:rTUTAAhQd#@94-H6in`<9TtR9a.<.4o\MZ-M^gG-W2.+7#Sn_14I$[Ks0ec/=PYN2<,Jl6F1\M^J`f$$%a+#qpT9pV[#N1VN3^)'[N&XK;<]n)@HT8AOLn4TK!fTP^;OMuB5AR.B6[AN>E$P^5eOo8HusLR&Z/o[IAn0'psQ>A8GqBK+iupP*8rlcBt=^BAQ$it"#U4*'%c<'cNBjMU%jh7lK#A<5S_bhDFJ_&a^%2-(_29R[4`i9R?~> endstream endobj 208 0 obj @@ -1286,10 +1286,10 @@
endobj 209 0 obj -<< /Length 250 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 241 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gas2C3t&nj&;9rX'jE"Rf"FSZg'Y*h&B*nQ,(r>dReSkiTC9`iJe)C]@<^jDG&#!0(5!kXYb`Jp$45c`JlM-#8YK!#?V4hVCjQU%G83eC%)>X8Xk(Q,cm+"U^O$n]K!L&WO%!YO^c<:;o0*I.X0.k_kfj576Z6VEGWjCMq!V_=1Tnt,fX5`R_1Zt:l;*:g7G3EHBL4Iqlan&gI6C2ERD%jC0-pTZP.uf03XS3[ofDNJTX):*Y6t$_Z~> +Gas3,4V*,u&-h(+^Z%^&3.%L`l:QY\K8Hk&E?GCL6ij,RJ%eAL=H'fPc$_^@3AI'P5`Ej;gBe155p/N,YX/XI%GK<^42E8dmq(&F\o!>b"Cf?/1IE(TFmZBOd-i?d"h+c7!KuD(ODg0/cq(9*:2'9cD,]EZ,^861^45RUen@<5ZOH(r_+q("k!#AG6EA"u7H2_,ec$,H7IT9>XW(VQIbUjAj=d&p$8[m?I_hJedK>;X7?I~> endstream endobj 210 0 obj @@ -1301,10 +1301,10 @@
endobj 211 0 obj -<< /Length 1348 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1395 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat%#9on$e&A@sB#j@sg@)"t5$R*PBi:Tm;'<!g93h+9Wa0*P!_j2Fc61lO<UZtA8/`20/I+PiUHAW8A3i^AEb33(&8+WE+TE\ADPpJ(VYI+G4A>UG,ETc,oiurEF99GM_66jqil34WJ.b(m/>Pb!QWje&nj4:>'.E58F+Ao>=[i=o1D8mqB[T.NhQ<.5%N(Es2MBPe7%+FmPhRWL2!UVe3p980PibYYBZ[.%@nUk%&04?='(oKm7WO8s1'$#Y&NoC\T!<\h0KY<.7PRV?1b/8c#3KVo6Cd>&N"-?2'iO-\5mtEd#)oZgWqH'l/W#$tU=()'AW`GG967PFeX":P0pX`7Om+i6UE8WVp*Tf-JBK9!ZYmG?J]Q1.==(=Yl#@PYK>(r<Rki_*0X%3[;tXA/-UJU[d`&3^X)\C;8BY[fQW2<!;X8("g`uME-c->3ij`H-qY9MhT:Xjc6aKW<ii,@h1h3AKIPtdqiai=!l5N)4_U?(Tm(fe"W[c#ja0O%JZYZ"OT-3r$sCqp?;0N;i@`1Qo;o=uQ$ejl<.SRdPR#gb0&oQ97r6P_VM[6MRVtZkf`S:C9f?g$&\rN5n]V,?5YK$YsL.i1GIbmASU@"kX!G8p0mdl>8@Q`OKkC[.JGrhk4rSpH$$I@f7Qn9M"gb9O)_TlXjiG@J["/(9"Zc9Hp'm;i3Ui]$SsqR^DG"jK_KKaMCbgKc*t!a)RBHT/OY#k@E$7:DX`nX=3dlpZfZln&m5*2^39fuKsil[%!A#-@9.^r1%4]e^oirminqm2al?(]:SP><ogDkQ<'+oFXh%gRG7V&$Qt_e,<$+Fc>W%U1=&(CKkYZ5Hi]n"%ka9r#_W4]Qm_D/44EIC=kTt9$Y`I*8c.]O<d.<#qaN<:Ip@?('K1OMVnt*G%10Iie0K;=Eta=b+]p^G'*(pU?B^V[$.T/bK#HVf8m;0%'(b$"E"%\G#KJ0ZTkG$HQ;<n^.a6U$7EtCX'E0G2#B!.p=3X]]k4H8JjP&Hkl#Rr)Rj[)=@t-VL5#2!81j0uqehPbMU=5!p45"KpTJ>68Y:a/\J'+`P:?D!L*F8?*m?@"e\lG=QF6.5k:jtV3ChlBoXT>3J_KVq-5Z#=-IBLj<,ZOY\uS9D$G&a-r^hAgD,3hiDn?Se7HqcE/me/(C5Ya-g?1g`SQQ>Cs=B@GPFQL3+!H`QGSR%*&4`1E45*34M8`iQJV!>s>0'a6V-E0,+sjj^TG#Q7ObN&]Wr=fPBsU.8t\M-*_0PgN?Rtm!JC+0kFH"0ZgHml.:CqEn)/!(N,4fmo>($]f(<N?Y2!uVIeM:dXc*^[e@.cu8-o.<S"K)2+kYYs-~> +Gat%#9on$e&A@sB#j@sg@*OQC77eqKfJG&(+t\o-kbTm5=f0b<D93COc+6@CHh\lr,tmP>^<DQ3L,4n.iTSO4n_K7'J.k?!?sPD%i,O=#;#P?p&/5="Mc%XV@!rI_>lL06q-EJkYl7e!iW+aKJHBro9XKAI"=4YgL`J-MA_h=q=KS1cjt9bu=>*iq#Y@:.b=b]P$&0EfGr]d."6de<BPL@J:X4lMb@rVEF-1AO*%[fcfnB]dU>A25a]t\L7VV'ArPaNQ+<I@H3[9M!Aest7V/#Vb*g9lJPF?>TJhSE*KK:dsYL"P'@ru8lE5b.:h<!^3a*Mqnn=(<6EK&m.Z2Pf5a7GEpXl2B6:_mQ@BWlR]rK$kqeqZ=/WoZ#`"Aos1U!D7.@q3H0hDE1WX.!`A;*BM;2]s2qCqZ)]?AMJnQbiNAcb1WQ!F":ni3s=-3`H7I:F4*!gIc^PHlVIc^NnZGS]dGBqQ_t8NMsZ1W9L>>7%$md#F6ql^)->CR]@$ufq>HP1d#^P%Lh)"aDI,BnrU>@7r/$7Zh`f:W<`I)5][Z]mBrmn-f,9&qJOTV'5po?0)^lE#Z50i';?'h;+Y(cd>B<2NbFAB:PR?:nT<^#_Gt&f,n^&b::XTZHEmZ6#>nRY4fJ&kSPk>7qArgh]]lW'n4kobHl:S-50)"1]o)->2OJ#lmfk0<I7cLqsM.I,Zi%JrFq2IaoAKRbI4UIM%.$_Ks8qkY!Q7ug"Ma9UT4e7%kkR.Y(8X9/n`%mV&52Q`s,3NfY6[o/*tusN@,Un5c=K:i+u[A7d6I(IH)6@eIH'CjNV7W2hUhQ0SVli(e_cCfXZ4](ds)Um=+)fcD%Qq`7jQh$A3SeTAc"$n1pV2h+I@jc,TVateY1e:QOt=Z#-6Dt2'Y-INDPTcL?V9d92aLLGB=61(`*ZZTc8BDT7W`I;JMnnMjjntCMuL+Ua"NkG'QO([2u+*fqO<fR#JhO:55?11:q5O"M]BJNRO:PDj`SlL`TS9_Uqq^_sFoc/^(T6-<j"D8M@mQ&ln>P]b*kVYmO5)\2Ep-UdCU^W<]^PT3HdWgpc-tEf@WYQq\D>k%oY<e,]+"(kF`>OO]K*J/a492?RIP*bGs,MM(WdR^odaP1'T!(&[J1*dD35D[\gEUd,b=nQS6V3X7(Kb"pog]t`$r.Jg,m]FB6$1GVCp+'mG9S@-*hS7=nn!,cS:r@8;oGV"5hR^5?$MKA4cRoCrJ%fEVAc!#9E9o!ZOfZS\L=^tFK-;6e_P<@s6:5Pl4YCb/iLmo=c-;WX'n]+b.kD[A?0=APk8:R!V]3kfQZ3r-D`,#4m(a4CkZ`oHJlF.ifj>p1m^DR?PNT!Ei>dg#Nas_ilue^OAQ]dY+'1h;2Fo'Vqqn"'IC!^=,hHOp&~> endstream endobj 212 0 obj @@ -1316,10 +1316,10 @@
endobj 213 0 obj -<< /Length 603 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 571 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat$uh/Ac:&:`lHYkga;jbeKcJ4Q`j9'O57-;EU(RAL,R$n6mr_US"WT,e2j6C(<XR'Z8UEPD$mm+jclKE`!LfQ[GMHB\R+UP*Z*K.:9%.#FS<PJ?\GB4NUsGM$85H*s*ca:Ao5rKJNO#,+$;HlV7D7D7C=eSLb3bU"_AMMK.(Qu%n"1H0HJ<*>@X5V)lW'ZF&oY^^.V+W[FJ@-W8f9!LY>Xij/4X1HN]Hoj/HS]DC2CN]/PV"ILW=aQ.+X>5HJ_J2s5Cn&b#YKMLOc2,bKgM?\5m=9ug0&i]5Oh-phqPA\U<Fq_#a7M8NDk[=KQF76pe^+=#WZ;BB?UY<%J^gd8oPUD3'Y)R"@]XokTj@Atj*?/G;+L0kTCn/5-'0DJuiV)H80deS3O&#:(']TleaBjPWY_%Va,XR&-sjQr<YO!i_!j1e&kC>6cFb+oVTh-qMW&Qu>Eri=^#t5o_6ADU5--+og]b/2]m(OG<d*ND]cdgR9_O'E-o[J%Zf,5A!p/FrTTPJ=Jn>Z*B0tm(G;1hYs&)f!BMeeq%+lRMbM*G9;$Rbh`Vlp0\05'f_YQ.:d/Ir1CbA:tI8l%;K<KogjQ52rI2n~> +Gat$u9i'Ou&A@7.=IaPsG-F./LfZ&=8B[]^8enn%W`l_%2A.8HP,doQYFT2_6uc@+0(sPP]f0</cB=))6Pou!17(hC:Dff)@tZ$"7V+QTP%9X7gZ!+u3`iD,eu`1]k"S^<9<qGP"T-4q=&in._;F[H9CeWaT1;SS!bTTkQilL+8Vl<#&K(4:le476>o)ONKO5O,'+%J>RuCHeZO>)@oT@GcIf$E&7d':Wj]m>lEC-PAK]sIpZc6m]YdSGcL4<]SN6)]6Tm<p;]g)[s@S6hHO'pFeZb%%d&sYG^*1e!+W^./u>LUBa!q!;P,R3A;jti/O8;=^S8qXUhhb$,s^]TMhn_7k*olTU;PTXU',61O*YeuKPB@YfS;hm%["W(J;7F?/TtR(\CR7:$*r2CBCk9ILa%mQ2:X._oX,W1r1tkpS0f#C7&W<1WoL@r$2OOle%ApNb4nJOd:eV`keQ>)DP+egD]^=U[meb`KDfoWkQ_,Gc6[;4jLP<bFFMrQ;L61<9`:s!`$JcSlg0GJI1^lnZq,`WqIV5k6hV1IDZV.ph;j,(?j2Q]rrCIk/^j~> endstream endobj 214 0 obj @@ -1331,10 +1331,10 @@
endobj 215 0 obj -<< /Length 1998 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 2102 /Filter [ /ASCII85Decode /FlateDecode ]
stream -GauHL95iiK&AI=/(ccjX0j!g6Na"?U(5jg!\u3+E7]%APA^QbkHdc?ZTh(#-=jdL;'EJ9\R.KBX5)qhpmlil0)_W=*ic"PdS[3UPF#OU,\Jm2YM&Wso-uheHKU_pSo>gP`d?O;sqel#gB)e(J)@%OFUJ9eq`-#@noui%HQ]bYIh@EE0`c[(^bm\Wq-Q/',OXT^aeF-1/T14,<[*?U'?7IS6,B7c&'!YS2Xfp)Pe9I:_9r+:M:XONqfk;.:2_\1;*r,B[4VE_ii5\pNPI1,V_](LF2a*o<[IEY,u]8[&0I-=atb9Qie*l!6lmM;U@iNF:uK-gqi_0G]OBnp]j`DZ;rYE?/Z.PP-;s4cauO<8,.a)Bq52:\9O2.[f@B2%\N!EQ[YQE!+G?<?1Mu?4$.^5jWYW#1F#=MS_bZ(,lAQS:VqS4VIU$]:ZmV+==r`=S(`HsNlO-eTm\d7ZU3^"N:'&-)sXsIPImiY#a]k]84,h^)Caa%,YHNB!At%e)5#+GCibQIL0'7u<B7=P?YZ(m)tsN'bJNe[Fs%VZWWLX1,Z\d'!ZUZ(!igd8"5K9Bp]^&$/XHRS7[AJM`Ah#PbK+$5f%$;hIMMV:i=qRqc%>TkMY,q"fYXQJ9jq*ZY&*nX=D,LrG,MZXec,*4O*-6>d'dY6k%VO^?S4HLhN1>)WUrWb6tF57TLG+:5<X"Skd=7gZ<_VG$Vf\5&\NEdEFpmJRDtc2)I!GhGis%e$:*p(OF\K6A&jaq*6qp6STK5O'd>hCZj]E)r!bIoO7a1u;o54mO4b'p:'D&6FVg3k]:sEK"8Xl\mW+Y7.iJRC`F+GG[6l'PRcBA]&<:?OZNmS!!iu4;_++[sJ#EVpC)GF0nCtNgq8VWWrtk^Qkq2TD'=oMee=r.p2LfVu)XCL9M,lPZ+D0G)5V>"`l7aYqsW)-Z`?VLV;?+DD_ZMe/UIo#].a'YMn.YG-]`G=ibK@d+FRoKh?+rO&VO_Is3<)*]!jN,QX,gY=1f_nR,Ir.;=OIaI8e6F<IS6IDnFRBGt*EVYg'AGVV0,_n-[q<Z&-8(M*<Z::tkkNp%NWk&6-@RM>+HY*C1-OAT(<p"ZEOH"SpJVV8N<.,6`Qi.9,nrEPI9GW"#W9[o#&FoT,BX@IZ$u2!k/0DS>lD\QQc%1)eWa:?h;e*/3iMVMm%BJHg.t?=@p!ri0;2erl6\khZ%<p?=Qkc,XfGehRO(+8?Do\u3[mHh8'YFYL6;Nd5I)fAXYf$/t!i)o9+U.5BPIGZEeG9IL!"RVf\V_P;+3Rj3U7pqd5%(+OXJ'&U4^V&=9M<bG&u%MHfTuGS?oW*@JPb/s9q\l>B_%hA':]F"hQhWpmJ`K.7^CK#!t6d(IiI;N9,V:8HRB4BX2&`<sb5qO-Ufe1_ASKe>eoRqPea@c"6WQ0WRhG@1>F?#4h-#L*rm:R"/,p74WVnPTNoo(-(#JmtL7KRp^X#0U$MUr"jn6<9(Wo+GI)Tkc-/a[f8("2sfRZ-Ym7QO>RJr8)_Xo8pL+WVe$&,GQ6fL!AnO(%#=V2#!8H1P7JUi,ml+1AM?^'B+FZW(i@fPNmpAQKpmr7_jZGs$VfrU;=L_T)bOZ/L"38uQ!k(Gl`>0F5k6V`5$YTT@j_$i[Vsb=+B^bmrL/R,2B_ERi_m[1jp4DEY.79!GpDNo23EKGQ-BjRZ%c8;[M,XKb6j^p)9%>teAha2OTRQ,lNo9Tb)X$:O`hm93lr07[[U'?*1OmM!-81EKZ_/9'^,!FkqKgA)/7SY4G,AD&ANZfDmue(OC`"a2A>s\t1)2B@L!`-U`e6Xqqb$%23T3?34^RXqR"4&L3'-Y\N:fJnlet:_67I,9@Vu_\VN8Wpk`W6@[r/1+GdG6V3&VlrXVjp7'+T,UTK^n^=5!mA?jiMQLg50t`C,(#7([k1KNKo/G;i#P-pSmVhdG]0DE;E1o2orRug&_`%>H06\N4du@3ir7QM)+(60kITu;5&??*7`0gQ@7EN7@~> +GauHM997gc&AIV:0_SBl=>P7f2Q%nc!&^*D;A.H"4sDO6=eK?-p-k#mnfguTe%_K9<l9ao.B.IiQP-q@=@n<.9lufag,ljhVWU:QTK]U_2l>:ZBY-H^IU,@jB9,t*u9>YJ!Zn2?^`p3^D?.-mFF*<8X_2n+="Vhl`FMh9Un^u2LF=E,n&TTSl4&/q1/S[0-Eh#C9BdmSj!T'nMNh$&2-daSq;P[Wt:MnMrh[T$G'PJg<kP1F=_ELA(09TK0d8*$cDYUYODtEQ1rmPUhL=Q62,dQHp;PH5dmSa-fJPECN8+iX":R`Yf`4/19]g0c-s91Q!@e:-BR#Gg?OD?g8Lt;4*QoO'FU'(U9PMMc%]t5_3Sf2J8LSQT4`A$=6f#flZa,0jPQc/5Zg;QU`OhJOq1"VR&^p]3+aE?LS&kqE,u<qc)<m_[jshjl'=H"03^gEmn^+bMbDc-FBu=Eft,rR_aBmBhLUuEcbAW&E-Lt&J7tX9IM5P-:sfl)2K`/$[aRrUPi5q/QU#K<I<_W?YYqifBSA2Q/KfYEFJ-qgI[%4>f4$'QJ:q(#Mp2FtS_?Bu(J;8hR8)N[)Bf73"`WajH)"+Q9aYhc,D`=D_0C]20GUcb[,tG1&XHK4[hn]4Ts!asmdtqUMe(`fYg)SjBqE2sY*9&PG!_bPFLL+p=+35UK=>4OL0?A>XmGE2Z)8QuHl-m=&D+mb!!=?RHDPGb)Xpo)8fqApq8"fQO*bc'r^S_b:@IT\LiGnBJ89h'Fo5O!Y4'2n/R13%N>E5AFhR(p>2YSop:\s$n-i)bgV3a@X:fZ12^11<l'$%jgXV!``uN+jgn7?TrK.<qu[MZlmUPSEu<K8$nL2="U5IC;PS7r'A[`u.dSCJ_5+>M7*pC!33[q">Q5"l"K3RCZq=_/2j#MQ%AWH6i.<KK5C)=P7/6K=S"U_Ob",f92n"8PVA\7BY]'Y@270.oko51i0@Ud-=SEKi2]l+6bV5hgV1E?-e=YQpd%m]U".-o"dZ$-lKg,A-;$*g(W#)?LT%L,RpTpcs?J2/K"n`Qgo_/M(&O'2j3c#;.X]&6!)\oM+jr)hN4[2Tk+m,3kYl^3AfLDdB#J\pR^MpMERt(:`R9k6u">X0M##,\AHX#jWt5$h9>ue0Xcj5((E$6eb-JJN7FF0'ZtWAWs#(k*@AVr6kkIpMHdebGcK(r[D>(]1Achc79sP&]9o?J2g),UHUaqS#u!7]Pl4DI,JTUF)s#ht(`/Yg)_jC.<'r5R?"[V/GTu;sQOS,</q4jsl+%I4T.ofaUsC%A>-Rfj$K&>M.*LY#FEWtV3e@,GkTiPFQi]@dJ_h)#6Aqh1aFniXg`ODc0<=4-Gr\M#3YPB3dE>6s5!.Yt&bclgNiofT/eXD'0kYJ?^(a%6`iE#i[o9a^RCN`B$*4Vu>adXRYB7ggH_Y&jg3eI=1iS-6r-^Ut:'SaT<pFL+/e@;bC,q#,Q_WP8YM@N)d26lZ@pPrQS/0&%:*[:j5b+m>:AS%)bm"_6$T7QETu-gVkb9<T2G1^s#8rqu9kjNjOS9J#.`(=:0X[`j[mpXX/nGNOI[*rX)m%%Z#AufOt9ZLNK<o#H3LM*9_$K6+ULOlYr"plYj=*&sO)(,1g4W!C@29:INPf8+,AMMF(]nS1"J1Kjl.-#Pn:6f>9JcFHT(79=P!doK6I5:c`1tXX)Nk8hQEh0YVRnYQ5?-kF*/Od<$iSB$JFge2&Gl*0J:b6Fg/&u90<Ac[]-R[F5<qm\f0:o1-C]RYTE<tuOm&6P!-:^qmc4R?T8jJo;,`3W/iX7TL9A'[+1[L*\JfJP990'5@M>hPZl*kO`'qc2@GUgV58>>0I6Jf[4sA:u9LCAd`nj,F;->#D)E@/344=0)7'[;q'p$'6B7)g/sEd%T:#O!-"6MiM+KD$/9&Y+*k]lXHp8osJ7^++I>9$sR^;I22%TIg8s3^s_K"b@>@U^sDO-GJ\i'!LSm][og)H?S0Eu-4jIs(GUM<$]ZmP8<#XWgq'iM'gc'D63Xk9e@C67lhVOuF`J*VRdFC(e`%/2jKefLmq>O:g-^&,#TDbM>f:@=VL/FE7$I2O8,Wa1Q-X8ZIqoCl2~> endstream endobj 216 0 obj @@ -1346,10 +1346,10 @@
endobj 217 0 obj -<< /Length 276 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 343 /Filter [ /ASCII85Decode /FlateDecode ]
stream -GarW44`A1k&;GE/MAs[!_fd#L0I"o<982F9\e*OlO@Y$2l//]#O@5hj/bef#H1,WhanEUPUI`4I6D5_7BFG*hkh&k!ULIVLE8$g@O$7*99:FqHXL`RoU!J/NDRo4fC[*g=R\m2'=d;&2/4Bd#?p>G4R2i$]W6<<Al$]o0_7>uc?*:?qs7+ZCR\MS^leV5AaaH:5-]SfJ9+ZS5NEL5YacYr=6d#3J':rur4Dq-O7]&Y-YB]rk=[oX'NhHr-Y,MGS<X88(U#M#kneH9@#G~> +GarWu9i&YL(^KOlT7Z*<!qKB*4YG-7(Ltm_oq3=)bgoP-mHY/I=LE"U^dInqJS/2<gP6D>JdJLe+Ku"`Ot;[S;![]$nD[c"+8eOS$Vc0W;6/4G&7GG,k5-<2sBK%_pM8fEF!2pI"g,2K]Y&Vb*(^-:Zu-^S%i(d6H"B2l*oL*G'^0cbW8t*PXS7p(bX!r1)KiUUn("&(s)>EgU9K@LCO!6r?bL$&W68;o4SMp<GY"Y?q8.W>iVAeh+uu;kl3G]s#6'fGbSH,m;Me)!3*fS;%51K5KsdIdL_+=WoL-^TBnTkp>7:]_uC6H/4ego2Ru:SC"JV=t)(qa=$3g'b-5@~> endstream endobj 218 0 obj @@ -1361,10 +1361,10 @@
endobj 219 0 obj -<< /Length 715 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 726 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat%!9okbt&A@ZcI,$m'od@0Y?"pcB%olW/>-sWr#>.[APX&tW]DM&4@M3,m+fel7ah2mTj#=kS&q0OA!L=:J,``L=7i3BC_Z1A2Mumui6k#5!pj)Tsh<B:U$RB("M?Af".R_4<5XddXX3/32fL9\Xh'/o%.E_<H=:j=MhCTNAq31QSHV<'77n?iYqL'mZI=Li2fHiXN1<)+AG#_Guqur'-lD,7(WI0Zf'h.W-^5PD7^`N(V!BA>JJY(S+f'c"+%$H5(O:^fS9LWe&&X]XT3/s4FZqa.JR\j4U)ru@f$-sVrY:-;8t]:r(FiL[i?d;<]"VA6+ZPZ*@O.jeS^<uO6dXja7+6Hi1$_-=g(\6GSk$=<Z"nbsKY$H&-hse/bS5D.<9<I+;5Kf,3iS]F$$CmB&44<2^tH+gn]Z#'kfe2eTeOPV&J6D`fZ>M^Ac=iKTOSfIBp27GW+L;3<OE8f<GlpsR[RE`6Hd-gct@9s9\8sI',qr1N38Z;YfTmo[HVsJFKmGG`C8V(T'FXk1@l$+>%X8Rp,Aa`A'1j!n.r]7m\ZE4DEAR`*DYNJcZNjcH1b#=)*b;(WmitI,6fUUh#nddoO%e!I[d/\DC]/l5%_YG<3"]pbL]E0Ah;bmjNiNsde8atq?c+W+u[_UR7)Q&kL+i,)2?oUH$`$KA2MB&+44"BFEDka:APuV.DkIUV3#iCJt\e,5H1Ks[f~> +Gat%!995Pr&AI`dI,$m'p"OG!V;4$m<,JIH;(lbsPaDS&J^g'1pYXS1#T,mA'e/^4k*p;G4N>4<pCq!A8I4<,5[Y[AJF!dK8K'Yi\2&d`$b'AmW3DHpYZ:45?JU)(g-qKl2d8/$5!n!.<^NS/:K*d2OQ0nS$Xq30D>-J6[3*dpRMjU88k&92/&033Q%<VWnk_.3Y.AU_+W!m.;"EFLq8s<-)iLMOAU#q_GCF?((Tp-;OHP@Jr/VH@7u4Y`.Hbo:$2PP"W'9FOJ:UN"LZ1kD+b`35d0'ep(JC7Q*kZk'>I0ti']h`V8GFZI=5"Il^sCqigAEM'K]+iRN-*Ch9<4m#d\f2+haK1Q-jC-nN[VkiITIr*E1Ga*]-Pn6lM+r0=OGeWCG+W$(%?,s%ZRncHdgjMq't"(u(oB#9<+873"(9ljU7B58(R.8"*(3,@.o@^6?P++V[;[R30Uu2i+8N)"_P&6U&V(.\Fl+pmNroWpj#2V09T8cXCR0en(k]C0laLneG>.ol40r1:p]]XOJ`W(Y;.bTcsH;/lL<rb6^6UArsAT[4Z?'^)<9[doeTh,VUAb$2SsQDrA5X.r0(<n&5iZ;CQdCtGLJ">,Q&p\s@!.P$?"aG'C2<au)ckjJ0<3E>H],tF$m.5uCtkgpIq/:s81GmN.apuO]"Xe"MmEkpBfZ7i=F(46E0j/J_[OC#?\Gq$VT+Vg)]X@s%eIf[5@]hA~> endstream endobj 220 0 obj @@ -1376,10 +1376,10 @@
endobj 221 0 obj -<< /Length 712 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 733 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gatm9ac=h8&A@rkqD]^^VYB0PdL:d26A*We>S%.$dnVH>$+9r"^Sa6N'<cD-KH`jU:;-D%b-/t^@IWt("^"%n_B_BS)dn3_#6RY]]p+=?+pA6nnDiXSb0;O5$,Y"(`;rF<2+.^=TI(-[Qc3lA263TZ`H>+U`V((K#]IUu<ibZd_8Xs:"12uV"MJ!25Y*1=ceu&52B(n!^G7/#9sM9.FOgU_l_#*Q-pBBVOZ'8l,=.g@fQhCa[n)<K,38-j:L^"=)8r;5k]$*qSgu/R'?ILH+Cf[W.C=@7tEKABP^6Z*8*"JpcT+sH=U.5o)%mnn6^ojY$Vj@jQLOd`Cp`d!Z*0mCh?RJ-juXCLH3QH?R2IEmtgQMSN*[FIo?qU*f4Q0t-K/1qDFe_6J9g[tM?aB?OpU*-:"fs)Qp\Is`G.+ei\40p33.AZ69,q5*UNDT;N4CjpVpW7O?Ub\hAf:TG'/`ahUJJ8XJ>DC7m:(q-+9q^*?KF/.la*sST)`&J&Fcr-%W@o3FEQGZIeR+6+,Kd[NN\oX+VB+6d[:0$2kEK9+1K\ZG@V=2SHa9`3UW2qXEg)j?nZ!cfLQlaBShDCXd<9aq?EB9&%'a/#%qT1P;'l?1Xo5\75KDntrh=3Wrg5SKf9+6J:]V;?dk''YnB8L5h92!jaK;/i1U<q$J0an*gkXoT]6EITgr]*m[k!e3jqe?AS`F.SM90E~> +Gatm9bDt%*']%q&]UY+_n_;=jU_tQg"G9/WYlPW.e7g/h;3DWjIub8Tc)YPD6J^;^4nmaP\Ms86p\Fsq=@/`I&:4!4UdGJ@3>kE5kl<K_*O06D`828VJj9]&:?;_%PTXB#'9oSdQ@e(TVU3aU*BW6bBd/)X/N&A,i@I1(#b/.c$)KbGC*sSX6q;#Nh;JLhqc;4lJa#/&]/V-E:gXTgCBkcXBcgB1T3__m3)C"VqmEFNj(?jc&`-1dX&:6m*7U^+^%Xd>S1q'1e7,0ETL]EmkK;*9PLMB0W[V.2b2`fZ<Sf"ZR)*@;/#Ojn=f#gicIck]=sA0CmBGr[@[]"4>CgCIoe</P#+o7H8]E!D]AlcOe=.Tk7k"XagDYqk"^W:+dOXLT6(UCo2EFno?F;46e:UrX?bLgb,2`[pWZ9ua88#Z6]3+miA;do_Gp',9d=K:T_Gku1.'^J[rZ9p:=1C0)D'9um.4]5q4lh>?M^;X^d,`/#9b4S7KTR#L5c0]o\JFBK_c0o2gtek!*oK6^V?Z&*a;(YaTLlgB=?h0d.MQBm;,ho6.RF8=e@.gNIP?lU8=+&(6X4"=rd^4hI>5*t2SJC8V0/B=;SsDd6NZRVAkMpT/k*ZUdCEJF=0=)9[+VAUeY?rL0Na8"^W1T7L?q[aA!YG]I,,ZTc"7N/dBXW)IF3'?"R^3;=PT%KsUN[f=%>@[&7D#nQ&T3o9JBY8Rfhq_L=&6_a~> endstream endobj 222 0 obj @@ -1391,10 +1391,10 @@
endobj 223 0 obj -<< /Length 648 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 666 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat$ua_oie&A@B[G]\J)j\G*.+O6Z/=qhQp$$oEYb#P+R($QqAqbe2>C@P?g_P(T(4jL^.LEu`o6ig="JL$9ffL-Q!pL/RYEgIDY8>H5W"^Vu%dRrDJ?Qf1(U,]reNuCLo7:8gcJ@sEYR2O`pp#Z`8$1AiLb@NXt3KIQJ\n]rIY]iR?KCq;#j-)f*B0noB1DDrq$Cm`aiWOUcTi?"Rqn0+LqL4B\k:[TViHVG/NS"CsN+Sc:M.u2@/3-X*.GBR5!p["CMUNH8-rd_KER4??B6agVWCRB9:UBMbb.et1oD!mQXh"VJ$r.>*lTCWSBF+8UGc7ZCi.SL<u&aq'G@>SY3Pd:a@1JWj!#R;-r,92T?H7jkqI;b9fmL6$<1,;r(RW&1&K.A5".^lG'p<9A@[D0Rj.`q)e`fnDEPN2GH,[+')6U9AMJ^e]<+V]HJ98n<9m"2uj^@[-VXBCp<9p_0g`bViSP\Lsu2AU[RY;%*cMI`dPU*\2Auk;os3C?);Q&CHR#eC==1Cs!WS&bem+R."D$sJ)qR_&.d5EQP0>l*9^HI)4LhJ"tSIkL(?4nS@r$+H9F<G]riPsg,uA_o([L*6fgE-;p\X$Ig*L`V_YUL91ToK0&fiGR9sA:@8k$'>/eL#$g9~> +Gat$ubAQ&g&A7<ZG]\J)jdXaS6(LBj#Drf#Zoofmjf6\F($QqAqi[*n8sUL,n3p"=E+X<,q2e!_+"=u<&d=F\6=:U<JD:Y;8K'Yk"l?oOpZS@I7c#<#C_3a]gHdiO\9Yd'*&\q+;BBiiZ=5k>-B_lgS3Q\JMlCMA+cB()59Wf';A*#9m[<=_<>`lSgXOHf>:CI]V\5/W6h4$A"'gM#apo@0:O^FYim6+a4dCD,:6aF#j!ds5V1!Q_?V>U$RfHC*.!XVVNGp0Gq=<hIChR?]!fWQ7nOV>beP^1$PjF=rt%r9i'Y$:'bB^?Ij1+n@bDBkl-i->q:^[%P_&`"n/h?g1"uYVS6b)-6/P[*pE"P]0ML/`4+YAK$dgj]Pi`XT$,5I>*_mKg<OcWOn[Y]d1bV6@:Uu6C[+-q[;4MJ/?g[V\d_m!!!E2_3ddF:0An9/WdUlFcs;^VRn4(JF&%5923%cI@D]g/*K1GirAiQV%u&\lk^9QACNQ!E_k7<i'$%n5'jEgWkpF`!B$K_B,6YP<4\YQD\H&@]Aq21*K?XDaCNlRBW8$I1"hZDDMtG*h^bNVE8"[jc'&8Y_TS)j\6%,NhJj].:JE.^]t&bEMpZE8C6FY#h:H+HO6)&'9*k@$"^=)bl3ohf&VL^rfWLr!Oq9E6/~> endstream endobj 224 0 obj @@ -1406,10 +1406,10 @@
endobj 225 0 obj -<< /Length 1036 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1061 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat%">Aoub'RnB35^c8$iF-PDl!(01d\a%men?_[*ZSW%<%o2W[aDJ^5(b":"HlHkfZ/B[kP?4V04u@k,7=^kZ'Oq(Z*lH%3V%e<F<)h&*<KL'Z^.$PF8eQ`G&.&^Q<tqq=O9pD5/I\4&@r5<QAD(PQ(ghEp=?NT;ZAG[D8!YZpnlPFWgB6hV$F\n$:Y3R(]pNLZj$tunDJs3XnBbus7s_TYoc9i#GK!u+1S!47oX`uZWDpBKRo'p5'%ffVP$3T0PmG`\IOqg1iB>ll;gRWXRj]qmhME*'EZ<D9(eq2<Z0ql$+B;Td!%TZ#+TW.JfchO=F&J8V;/m0E!)qakj:oXq!J^#d((<ffDoggs`?+0k/0u&oX<&HG*o<,m,b]K*.q:]$cod`pi(E.JJR06X+b6khTI+VW5+CK(:\a=1mcFSSWt#DL/HD\ZV[M:7@!8R0<c_G'Rm`[:9BP2L!U^=Q^DXE]7:dfQD`]qT?fRXGi$I09Vi4A1Ak:Q8gHh9G>gX37"M]$tI7FSf,R/Iq;(%(ciF%3\2JJ"cH"6)&5_2;j/HdK!B>-q+9_c4p!LG]c^SJ@fjaYlC&tA8Tr11$LmO[Z[HSmbQtC%PUlQ]GTAe^=DZ"mO&U9a5$Z?N[S/CSHD>&6X[G$bp;[988JaZ$_XOLJ<>,kkke!d'h'p",M@d2j]7Pm>i'#ZB)Fhc2)>U;VI,VIO>>X6n:_lP/?'T<oa)aHKPnL_QBW:[%CK)H;WPJ3!a>@kMhJ63p-FW-6Ed#q4R,WR)f%g]->1>`4?&;QHW#`jEQ^Khg)J:BZHh`>9*?+*i.P#K5aL%+Ws$?AV52^)95\GBQ,]/[:1?#U,K:@=CKg04JoeB\t3ZkW$S41cLhMQ4[9(s^-IhjlVH`"3+e:$0@F(Li2D(E4QW)=e#!\g^a1RGd9OTo%tsW/WM-]Kmn"&ihpm:j!MPMr,1^]m:&C8A-_d@.60J6bEqW^#>Ldd06U9^#W7R&7(!MPJhe)W+iK##aB_9%oYE/jUk7k`!Pefmtrt!^IV^;~> +Gat%"995Pr&AI=/TU`;cj5Ll9]k,`re>cfRh5H[;#D\ZL/WUUimRC4VHOY_^&-uK[Ym5d=q.@X=ICGf]s+i8j!p!MME+W>O)745U6-D^4[N(n@c_8oNZ$n;H=Mf!X?e5([6r=?GEe+A$!/N+Wj!!>iW":VE3%T\KjAEM'Z'L2H.i'(W>Wo]WdTrQE9Fk)$&teeQa>jo]B,HkCE/r$\Mog[gZ^[>rZ67K=&;,@s3$uFlNe0Bb;Sc\c)#nUqa/^mP!mj5#e/K[?8"e@%!8@s)Zd:.Bm$arCDf2rDcSjOKr_E$WKZ>Fb4-t=QO-GVSSm$_5(uC:4Pb/B5?M1]ibH[<[gGPZ*A?*B0+B.NT81d^:W$aYo':g9[U(1ZH2'$?,jeoQ\P4=p@Za+[4Cq]obqm@rV5V'h<mZ5LooMHM.ujnSmh=B5%s%45T&?XrN+7R]`b[Xu^6bUkr3C<D`1.QA#OB"4-dICH%i9D-!N'mD`>"?jr.cW<b`X,06OSLpD,#We`K!LFD)j%/!irH4d=D<L@EUnN0C9H!]!O%OI81>6no[WYAUQ6kllX<6-cV]]eI*<3qC=X))sB0R\g-U_fuo&n-&7Ggog<mpB4<N"(IYd*oQiR+QrAZk^P#&!p^m#-,,6%W3'R4Vp5/SnhQ7<2N8@lTNOBE@&%1gHb%5lZZ9a%G0guTN0`$]St/+)Z4Ht7@C%o[FQDqGf<=Ynf<oqBb419RfoAYBcrQgY=L,SCbmpJ?:Rn,-o9XNT2D2VQ2GFX1Wq#ONVPYQb&TXoq".!NU<j_r5'@f&[S/L;(OqDO0cuG2K)k-S":#u1/]Hsfe3VM(\c@MUanm**B4nnZLRH1Uo3cSFWOt8':o$I[c`:/KVg-:0gN4If9;@i4IMtF"#SPf0c*JYKn]oC,+,2lh`MB_(fbPWD]KB^RT0At>0MA^r'5:J8_n46HmFAg8m7XH?\Grt?jD0+@<JH%Ud`pdserPqA=_45&m`V@o]ZUTKf<aB"H!;qC.0\3FoiR*&Q#eIGI@K&pq[6t=nDLm$>AV4B=lTM1n0Ym+nfL#$X53~> endstream endobj 226 0 obj @@ -1421,10 +1421,10 @@
endobj 227 0 obj -<< /Length 175 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1000 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gas3+]aDVA&-Up?T41DE>^,YW>TM2.64gR=.nO1W,K>8;mqF%*,23Mf_cIa.2@MjYaP(.3tNPh<S4"@kD()*+lfu=7I8#fTt)X[rFUWJoX8(B?@-V:t)".RlHb!PE1!W-LfCmkJc[LoPN4XG#s7n?e1.t/p!L1PDt("G`cBE~> +Gat%">AqtE'RoMSa:m8QC4&V>j8l&n$u'BKJd$B!*k^!:,>r/60!,'oVb(VbCRS"HWDEG_lZ\B8ANG20JHUc0*!^1AK>DS_!bd$2?l6\0-4u&J'Vt'Qa4VJ?Mt>k.OFB$b-pZ-a0VBJ;E$M#1#)o2jO]CtU:jS_6C-Bln-&SOhf3/o0Gok1Le,[dC@a+3'WeJr'_X65UKbY#='iJ*<OgddX3.uj20Pi9WL-Q0Z?p=*S<I9Oc2*YRr";K6!Ekdm.5OC2IF#,Xj0G"=SnHh5A'HoH1.7u9:Yg`4qi=t^SJ+[#^mAUe?WE8dE2e>#$6ELX;[91Wp-f'hWaht>=qY"3=IrNFRa4tJ!%&+V4AV;L_Lp`TX[G7j;Cl,tF80Sb:$Hn-Irl3-@W/p(T=4km.?;O/4H2*9'0O3>9Tg'Zi(ZSF?=R?'.5+q"\h]7*-\MMb,Y@>:eWEkBJ(?uK%DWSDal=Qqs4gHepsNeM/O[lCV=oU34lOr5Tm3[)P!l!<dVr6'Ub58X=H)ej`t<jO=*OE3p@_%B#XTXP5dD,+4>X\4$nQ&<.D`?U=I_\pP$"jH%6M]Q(Z$j5TX[eZ6WKD'94+'QI-F<''l?[HK_n9;fN.dVBhr*cP]AVL,V^RBe9<l8&mknVJ77dH^9>Ht*j%?[og#l&3+e"cAM%'P\Kegj*+g:QXV1fF[H@>-;5dY?V&okQ%XRsul%]9[5[Hpp!TP:acq/5/Rm>dYGl46U)tekM&@&`Fs'F3C.NW_0aiS[XKZq(l@12uWoL?s?X2?*qS-kY(p*CX_E#'5WI+=+t]&YqBoWjDPX.(%u\TGPKR%@=4U%>9KUM$98-dS=:"@5]ZtS\l$>+33+2g(I_DeXQo9n;!r=9iB1;SKnABG'C.QT_UbB$2&qF]*Lg<5V@`JsbHD^-=^#=ru3cL=NNl(.n$eOY0:V-i"m]e/AOm/V&^L:fK7$,_YcS!]*72c5JnD:l&S&l@4'SN%-#[3Gl!JPEq6N~> endstream endobj 228 0 obj @@ -1436,10 +1436,10 @@
endobj 229 0 obj -<< /Length 988 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 652 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat%"95iQ=%)1n+pb]@nXQa08nmMXSXog^!"h&a3@G!k?jM[E1GIH9Ys*f"T7$dDJMZA;rlQ[kL,H:!Np?iS#&-jm[ZPa1;1DE+G6NP'N#-C+N`hIHK:`qj@P'6c?U=PATP/j`LN3ucA!#UY0JCt7XE9h0jZ:W.9'/b]f"0#SnhLJ*D9lRBTj?PtJD*VK?1nW,^t4f$>olGkkOl.l"8tqVmhqSVI3/V*(g'JaOZ3mT@.\A*]H]LIsY.8(d$<GJ0s&>4.:%._,Hd^#8-5Y*CQL8D'7^5Q5dFdUg!&Kh5dD$67o6\Y(W+!n9NgfQifs-U[LGB!Ue7#J!T_>-3oa/";"*be5`nmel$WAM.;XcOMrR(C>fN6MkZ@,fiW*V8"9V`q=.RXA32-ja'OaG'hn+O798G$-Y$Hk1$QgpBh1c':m*)OOP#,cbhTo*61t?^iLW;%AEiN/g&b?%i7()*U+*H"bj,kE-==`#?6:FbClnSGd3tP%:@C0aF_jqcRB,c7g\q)=/.mO8ocWjkW5RK@f:[U&qHbJeHmKS-#.b]f6Y#A:NC(RD])6m2!@=&<0i4Paq\NB=Ls[1H']0p&ajh(Cb'mIbL736WB;&BOs%OXEue$%gb46b^kfUQ+"QU37ot[tl\SZ6A!ZmjereMNHfE5fEV<gOSab:_RG2kE]W1X-qD!M0=5PG)0OPs_FnG8BB*Q:_-1M,I(EI\8F*%(]-fEi9g%hPI$F<:b+Ef_WmSil+k-qVIXZd3\uF3L&:#I#!"@^pGG_X0R1Ei_,jnK<>T,fM4O"un`K7WTNhr?4di=P2SSm2;TR'LND\1i2tDZEBAm]nagnQE",Jr=&`(.p8gUCf`Y8H*C#;7cQD?HtT/P`,Z"`1XFd>nAJ>p6mFSfu/[kn\NC]#p=NG(P8h]KfSE#9UAELY8QFRS8X>o]8mDCVYl6aNe'ONkM`Y#G@nREXaU\UAJ+>q.Ol+mSkE;/>_ej[lt*~> +GauHIbDr&G']&?q?Ht+]qYaO';Pm/)<Mr_PBJs]DKU<0JJu:lfakt^#'4)i(2AHk10DD!sq_EA(nE(r!=@/`IQim\2!t:9<0TZD]+>ejGE"MHR!o%uhV<])+T1:s*+7hI*9[O@UbW3ETVT(``&@L0no@U]7:L>%DR2c/k%V9;"Ui0tpRCW)aEI<l!>MX^C6tRAijmkSM+W+,jE65;GRd,:"X5[#a9Q`-`OS-!3Z76rM_Z]bBHRi+XGgK2(d4/sWkok[YopCKnh_1Xn8M)E7@n,l)JbPjd)3MEkPYXuY+CStT8>p0jb$L`4]42jA\L=o:"Ifp8uOa^Y#<rM[ss?[#?+k:#p3bBp4K^%!UKq"LB7`H+gE>0H%8J;n-BUFYqVS<t*8RFPg'_(h8Y)eL5i"7@^:%ASSR)q-sQ>R^*.m5KE#!\2Sc(+$0s.p9<;YqmG[mji2C+rCP21.o"3KEgKWf_M[;7.sCm?`9!6uEC*,'o<k6[6ERX;lZ?W_*P4oV-X+_0L.]t+8o82>6'tNjrH5EIAP@SWf#N&=pLZh+7[CQ/1%@3[l6S?2k=*"SoKue'U<5YA3>!0E--&MXKu'tTT2YVYc67DNWRf.mEW_K_CN(("*<h)fU>JP/eq;$IA6tP]q7oa:RrU~ endstream endobj 230 0 obj @@ -1451,10 +1451,10 @@
endobj 231 0 obj -<< /Length 633 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 901 /Filter [ /ASCII85Decode /FlateDecode ]
stream -GauHI9lHLd&A@Zcp6Zheme=bqQ(6Dg<,JH].$pq=CbH9`%4U3nrqFCu3gbt;EiHQ"_n>_eB&Bh:;=N]m6UV#G;%d9D%1'iD6P,s$%Os#[.Z'l_qL8#nhV29,"%AhsPX#@5<#6]8"[a;<SS,]S;2&!k-@'%KD&/F;O_3?P'N/qn^'V]#rSFB;D'X"cT@<A1II#?]q'a=bp2T#kkj;W<3BR!.1K8u@P9V)U"I(g)kl-rLnad.2%(di^bnik$IHGUi$2ta%f"d.*l%+TCZjCh.Dr:57j*6gn+ahS94!LU(,+1eOMX=hj1O%&8JPfOLqUDfF2t.CI%^qlY\KU-jK9:JejIo-oiI/pZg195UiJP#O"*68NabaF\gPSqsj,AP$b%Z:.jgn!TW\i&)c6C:5,kmW(T@7omI'NR]3*mjmk(hciI:(Y8[_gaV:OggXEPf:,CXB@kiJHN)@e/&F]<3Ja,UaZebW--0$j]2tGc)M8[I#_@C>JIGfe=S"On52&cg33".Y)3kIG61'hUnoif;12+@pZ','a?6PB_f<LN<A3H=8Y7a%e8f$p%g,(+=/,t@Mo?ageHjI+AP0EhQ1_1.P+2DDo#`/:QujOB\lmY2)?ZuE'Hs"[ZZ+@Q=$IO~> +Gau0B997OU&AIm?pk3f:C>r=]+G&#Wb5l=>cphsS%W:Pg@FKJCKAH+aE?;6QVJ4t=HLX\lS&[JJEGiY4X7l`>%^?"B]^W^[JUhB^#]L28i!0YtT7Lqd^0Z5P4*;"HKCFLZ0n;Ar?pFqs_MuDK(ik3hKZl1la"-p?)Vk70?^@doBeD;@b)B'ID_FVC"8]><`M?+86O@8Z%<tZ)ugDN%0VaVnu6^kK#6j&]ou<eNt@)5+X_q0+8Hr<I\0^4q1o?s@=6I14:I@5B3=Dh+E-=p+FNIN9Re.q0oX'Q%#NS?]m*A#_i!ojXOMN0ii11VHniO:52Nq8+3/Jldb\T1PUR([0lt<ZLKtYLHDg>6D*-o7@#19>k*pr"=_;e4):KjR*G'sN:<A<fF!HST4[k$\1N"62+R.OMX+ArC81SQ'CI`m<qo5X6B4TV@1\l"(5UqjiGLY$>+pY'3M+U/9M2A6TVIXQZE@/.qH:k6V9%"b>.[G3X=iISA5?;UARN+*""3;<"-5BjcJI".<5TB)`U7;jrU/iqL<Fm!l27#1Bg1f=Y>jJFkZBaM9OF$E<pnXo?6?b`N"T8uC.TOCZ1.CGFhOZ'2&RuC&pUA2S$S%"b"kSI-!!^8ZY\s_F>_>!!KFI[a';=uH_m]E;3ZkheT$PMY+/GF[#\3Zt+NjT?R?)"<8,"C8[!'A!#n8gRQ$ZEM6VU\n`u_cb_V:_Q]3C_f<T[oa_d;(T:_R6(`IjkFD;Q#!pU#7Hm8N2WeirS"Skj",Ln;H(D"N#`K=*r=c\U_l2P&?LMOE@Ncl5rkF-*VI"rQfD>2$;XK.ZC_6G,X_QPQk:=TkJ-6slE#UEYG$dV=*G9!_!8=#-F".l[(S;I%iMiMHc/(EmGFXok`\JXa4t=H.j<%a?2TP~> endstream endobj 232 0 obj @@ -1466,10 +1466,10 @@
endobj 233 0 obj -<< /Length 882 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 198 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gau0B997OU&AIm?pk3f:C>u^^"OaGT%S._9NSo=H>dr19p6k6G0@)0H*hbCk8mGQ1Xhcfk3^rYZSrs45S=8DN+W/nbn(0I%fq=c.hi#:=E"hS_2kWMH>Th$:Cqu<XbXo[i/IiM4qf"J^1PFd^>L`7;:1M5-O6,bu`M)N`iE024lu,Al,Y#W-ZsUENJim(d4%khEAI"qIn5ioB6MHp`ns=;+!qJLh+Z6E8ner?e`@o?Ktq=,+0fAkLc\d`:\Yig]_4S;UKJ'Bgn*_T*rd@g0t_/*q-GgI2'aX`9^Q7(\2$r;;aH[cl&8BBGVoAV5TX<?Mu%X:mc._6$f7+s:&cifWchVT4pnkBp*KoH:lCCjBU#L*r:kqLV,<E4<'6!Gfo.=%^Niklej*@a77k["#[eEEB9"jIpD!VeM$PF/lKtGseUIk;_2\qZL"c5Z"MTk;>$0"X^*;>]KM;trfQR:9X<]e-i[QfdhMfj-gLeuq&N.MC4j?P!F2h2D*HXaW%lEW.J*P9na6fn99G[WcOBjR:W9@;4)bAqu5qQb/.!d_KG`]Qk8H)`/_:2LMK/P;.(ft4+L"fOMVB5aO)T9;$'*1LX1mP_WCC7>#%)AT\CFueLbCJAY&P))<S&#P6,oW_/Lr9W0(m$;]R*9[@l*c)"Pc+5;^SjH=3g%+X@`hi25d4`B,M3]-%1sVoiYe0MGig5Me';]+19M[fV;KY;0A-`W?;S"^FZ[!A-(:Q?^"&'h'gD@WGbpD"E&Vq\O)V6.#ak:!:c9c%<UaYn&A0R^XK@/LrA@b@]fbjWNXW-*qEBaDGSN3VF;;?l3hu+?hs(,_"Ooa:aJYbs@in;r:D)bPVe=MahHFo=(QBr1SLR"RM62gtML-A9~> +GarW2]aDVA&;9q/MQ%j:?M8jAma;;5+Z@2[@\I6VKb:)o^Sa@cO_n]CLRkVD<&PN3W>I3b98k*0E#oJ+7VNA%O]<,"l%F3,h#%&P487>UAgW1Yi6%g^I':_22f+9;OAd*o"jI]d`nuLc,D[b!HYLc?32!)_e`f$VS[*`dAL#Pt4#=Ws/aI5/="]H5@R'MrK>KA`~> endstream endobj 234 0 obj @@ -1481,10 +1481,10 @@
endobj 235 0 obj -<< /Length 198 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1417 /Filter [ /ASCII85Decode /FlateDecode ]
stream -GarW2]aDVA&;9q/MQ%j:DYF'MQSr4YYn=,P$^E!50OiQ+pG@[SZH_b&Yk(kWo%H?5%`'9r,j7cbdO8eVXMgk>_I[\B-Z$-c4reM>H+;/)d,([QPQeAGpU]c'j*p?aPhI:`BGp%irRSgeD\Y@dQ^4Ge"ta\jMSI!EZMC!5CBsO>'D%^FLe<CXD#M:e_l*J7JTW^b~> +Gat%#95iiK&AJ$C#[<rmMO5,-;30M<fG)tI2aA=WQ`;GNRBh[jP*_uNl[N8>U-qnFm1d-N7N;p$RjUG'(;Kha"Y^*.$Wbe%$oSJ1K^+1UMEi"(3<iW<K@MULqrWb%k]fbYkhWsi;eUIK+](*+OZ2o6Qh@r0<qD)Z8sh=A8QB,/.pGpD@2%p97<OG9fNlR6gSh)#,C&ISDFs3/2V[fP*3;LLh!)r>SMen-G@LlZ'"+f.$L:'aZ;:&!\co]jr$`-SqnS\9gtN]b@M=[(A!NieBb>jBW5:L51Ika:?@$cXP$jd%q?#eT(WL5pu\fUNU1UZ;ikK+/&fceU]2P26+c-h/Nqf)+V6#`CWlO`aPs2;K2NWH#UI6GOM%o2TNc<c2&"Ek\YgaS=F'Q4b:U,T'5N>tmfk?=[$#5SBZ^mPNh2s>\un*LPp4TBfTao+Y4sB5\REA6G/M9H(JZb#a$:F0X:@4-A!5_BS<'P:5Pc^TD<O"BurpkC*G7.k/U7dnaC"(Ha7/GF8BjeTWN%"2p+p]9ohL)pQR>o_,G&%Jl`SY5sST,H*OVirFa4j5o[WcHZO?J-jQ0r^8<qGLj"@Mp.lJT__12TKj>A(eA6HDaZ^OM;)']Y'-uC>4`=#QJ_nk$5iO>=!+D/7%oYd=4\RjVJoY%%/]WOp:l>/H0QWJOb*UE"*[.k]0BV9(HYI8NQ:'<L.2^iNY6D)\V)ZRJ(4B2r;O9MT00efI2dQ!G&%8M+T2[4jgq_ENLq[Z_!9!+B75e)rA#mMj./7,lL,A'LI-.c5qkR;+TWe.SqEN=i9Cg9e".H$)MHF*,5X'9kJa[ksZ=4oU?P.lML`CE@S/Zj.8?lA1Wh"5WX2UW<8GA`_L+[b(4pdC1>fea.u'IOo@gb9/oFNi^L5JRK]*&[Dn2'$)R"_b%X17thIQK5YSW)lLX-5*l>Q-,Ejo!#B>f528k"H>dog`1gLKb`G+S)8[1-P+8Y;b&Eb*GCHSY*s9o=)o83AHH?^i8#$@9q*P36=IX7D=KMD_51##TTp)a,)J1,g_K3U-(JrbQ7\dG>,,RSQaZum8d3,D/XaU!`oW;#U]W3XOmE-MNY<Z2fkQ0`hOp`+c6N@97urKcL?kKKc$U>n!-$7+M+8(97q>12&1?9%53WKqGK#RmY;7:gK$jNrBF!3&o$GU;/Q]@uAB9?/5?eM>Mpo"Z?fq0?Ys+`U.BB7!_TuC(.rKG[sO>$f/-Yc3e`=M:L[R)8UYYb<5$iJAODPd(C$`<IsWdoZ*u+V7bI43ddX<2p]_.k,E4S&S=k9>EYC%e3g-hqTf7LEj"Xq)SPeCkfjck@Pl#!8<V%[AWhga[=rnc#JfF`OGi[g8Rg>>=[4;]aiSMe"BnBZ1thtDG4M>;Wd\t[bMGZM,X'`@h=[&qYpPAm?oO~> endstream endobj 236 0 obj @@ -1496,10 +1496,10 @@
endobj 237 0 obj -<< /Length 1375 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 173 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gasap=c_;q&:XAW&5o1j(2Hr5FR@fef`EUS!,[_0e4$'r.@XG-E_(Kis8,<,uTL/k_1hP2o?NY`K0?(YJ9#rVB?;ujWY+V$Q+QnK)nB6AgUph:_F$!6h&FmCOVoe_8!h_GE%I](`Lm8&Z5nFa8iZU>a6[C-s#qp@"k=e_fE/*lVFmdE^?P^jDNX:JQ4a/'Z1<9lj7[)pE_ej3?s8$8Mc"tlc`B.UISlo]@)EGAZ>A+\Y9Uh'.Aad0pK.B>fEDA<pZWWIX&)7igm^WUf`iW_S.%^:V;"Lnl.fYu1<JG,GH(WqCCqJ1M#e7-j!i+li%(3]0uYfcDX`&eLt?DpRO<8BD_=XL7$nK/ct*-!GXV\e]0h0r_gV7p<-[($ED^[AT&S,0b.sZN3RF0&;tAZC,h#I!iFo?X'[f_W@Vhe:OtH+31MR7>RKf]F]"d0[$aYkZq`@02*FB*#h<fV`2K@KqPuNgEH1]4J\7`\ZBi5S8*QO[+Y@9g0.9qXG.].:KOn<21MN5Wba6_F?EI+RWT[nOE4`jbJji::"ih4DVb4n0eOoA9X/e[QZZkp3?0R'Udj3GJctL;)_9_sjfP@`kAJrUl_>!0Nb&[6M_</4ku:R-UpTJkllj<cuTICD1:+EC<p>3Bc!#oqW^$uXL_;G$H.lO8bHA85E1HbHG5cioAR*[4Bcl92lE=-?h"[].T4*FM9GoogW4*+J,^I_nPhHW\3*g$a_*[VZBk##Jt7k[I3$L]A+ueURPqjiVj'5nh23e&M0K'ft6KA(bVI;q)EY`EOR%+3J@@RD4$oS=b4B>R3rb\Pq5=F3jfYeA8`aGO#H]9QPh@dWNK$TT3pea*GJt^1YFAOfmR[H=PZkV(20gEcKqu30s5V:O-'/CE:='giE&:_mWN>L)XV<9Uo7Tje)2"M$`HY>[(FGAGKPi2q]0gAl?KKm"BX_K^SfK;:bT'O;QnA1csj8H'W*e[=l!M<%7;!q<7coo4JQq][S[KG%b#[o8(=&aRkiUYjgnjB%nhe'86R&iBr]n5Vq#CdqBYfSbp%SZ*gV*C8#XU?W"LPHZ-nUE5sYf8Hbb91"nih=U90j9V.S_EJu$U1$X;@7dWj^iL]Y7$j)*U;=j?'Djm]=2Gb>lP^inV?&4Qu$?kS1YbPr?9@-7&*'_,W"DB0O@HpNc"OoL/:VZXdn.jf4&38c@\8S'__b_>1Tr%)8)gTd=]+WQ:Q2>W@!`YpN$,RE-U6&akW<#VP8#8fZ7cnt-\di]93K\0?0uQ"9LO!`f`"e?]:oc"hF+#b*'Lcgkie_e'VATu[D<-2WToiCigY4,RKk0j5e".E*U8o_6+Qc#nSp_K(_^0ak4\Hg15*noN<-;P68GJ0Il>2uao~> +Gas3+0aki`$jGQP^ETE_`oMG[D_BPU5nL>YPMV-`Y:0)DHWmD,8<ud&j(f+T)b"1EZil=(&EIk`ia0rc*D(n7j'f23Ehk!&dC.C>gnsm(o:?Zp4*+!fL^Ee%g<@)MjFW/R)*i;X7XK2nN,agDXFG"b>p0je!g3T<;fEbHo!EN~> endstream endobj 238 0 obj @@ -1511,10 +1511,10 @@
endobj 239 0 obj -<< /Length 235 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1791 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gas3-]aDV1&-1WO:N9l+oXm"PPHKU#3!`tOE@<]0K!tZci8^;qU'MsP*;B''p^G;!`D?:19_343&2!)K*1jZ!_i_fjC$<<MonQW/jnB;eL?4ueJ`L'R>,D0%V%@RmP4(EXurb8:\u43"uC,C8/]3ch`73.9$=BrJT+_3<$5O.q<[7:@2i8"!J"nWDS,m+P-WV\0bq0Y+C+<m:I!M?WIa44XEqMVP9.D"No[k;u~> +Gat<A?&tL6nGRe>\k;@\P]a5+Nmp[foHGTm7V]9s9<SjWQocfL-5^dVIp[g;*j`X_eS6DVfJB,f)=r$$p%lAbi!>Itfb[_mo5o[,=8oE;&`bu]&th2mSGgk2qrUh'UpnW6cMjT7$68ET"-R=C^naJR0gUqW'h-6nHroflZDVG=Z9sg6Vd!e(K)XiU,9`2#*opI4^sjnm","sjcm2;l-;9(iltTtcG?*3L?;4BaEEd/'7j/?We`Tl]VV`bijSYm"\B-$&LLa%pblPFh/3Gk]ZRApIX23Z)clJAMnI%JtkfE@u"M:D/CYlG"HI<Tb.a5&[-)8(YX:7Tbim4Irq%n9CQ;JeX=t^-`j9LfVE7[3p7p<<QA"s;U!VW@.X5&=,9$<6P/IO"O"s-&On`CTjNCXd:(=etgfF*+\P9c!];JdXQB&e,G_faZsCKEdDRV&W\SPclBZ'Uk+d-K;MFE>4eHK9mcJg*QH5pFEVCKDIe[?jF(kqNERL0&cMAh!cl]Us:RNtf+a.!;\l5/<)&WaC*SYb7<`<"Ri#"T23E'Jh]=]u_3Dq*UK%ap9!%_^[q:R+Hm\un\rRh(2^'Ib#Qo](0=\B\QSPpshSXiL<UrM!jqnh'"hR/i;3GW<ZEogtecM2B^9g;4.R^I6.eak/FfB8TEHtArq(LW:?ei<ir&jUMjl5aO\gX3lS]We[uciNW0%jca0^8spH_mCDHgC'g';ZnTNAAY^#'X[e8S>'u(!:(E%_3lHn.(D_mN`tc$ej-JaMeHZ68t4UJ]&G2BW$_Hie*/aoeiB#</+Y:0!Aln*.Ksoo:7G,t%uoU,D:7!%fr;_)#YR6&rs*Q6<U[/L9_XD_kg:'<,bTdCh'5N)Q@SQJ2(IHUeJLAChd,5-9(7tY05;b<h\9V0ITsRqoKA!T2\rQRi&$]j5pmK[?F/ir)F0%J"0#:n[mubffQ+4Q[A6KG<cYO4,BCWL87\gY99,.C98I%$pseVLQ@%0aGkSk<1m(t0S$%YOJ)HU_@$c_OSNV$.J_UPROspJVTHI-rd=J0?S"CjfW"))cSoW_[clTBF<F8Y,jj:<)-X,4S56R%S/dER?9c>JEM+#iZunaN1#@cXA4o2Z\Q-':&V^mqB<rVED$TgB6Un.OB%L^JTEgR<&V$1e#-7d';:3C>T.&JY5O*34VAlrA",_`FE=K8$3gP-JjI*ZV?.%ZMBF--drEZW0V=?RQ7BJOS6`)54p1Og01<,_]!07l7D]#pp+$\mP'ur="Pn$Zn&HgdCoKUHGhDMJ+,4DBki,PpO!7YOFu]IO'j8FhlS5g@*[GdOM.9m):2dcJ,HTdIC'dLi6GSJ\0R'fmkk]Ek54o[#l^"=i<S$e2TUfaq5Me,6of,sRaDkRDY(:W#cY:!>'o3-L?t(jWM&`08)tE2U-pUI*)$mdcCTIjH*mI#@\Ps5a]Xs/"<C?^!Wb1)6\HK-?GJ^rJ8r#@0.$$ppL:nRB,fD*e&nR+#mqG"pMQI])2c,V>@1nN9B'%KoIa%df?bc"so3-&(s5Q[u/Me8M<Jq!pSgT!>5E#nD&/d]d]U?OLY6PgnP\u)#GGO#CWW2U8F.HT$hG,YA;UY#:a`ej7r8@Kq^;">]*"@u"THX9_,Jejr4XT?lXaj(;3?a4O^gVGAb1NJcbA(C49sWB;E;9Q3PJX^8)RD7>TsWP^$:jg/.Yk_r5]7];YJQpuUMN9%Li[T%dDYVRV#JO5f$bYJ.#TC5RENTKj!5rS!O;L-!<(moOH%o7Jf5]Z"sSK2LOdjT+abBnOc;q(IC@^bl~> endstream endobj 240 0 obj @@ -1526,10 +1526,10 @@
endobj 241 0 obj -<< /Length 1516 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 245 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gat=,D3(GM&H88.JPrJl8f'/CSWd5+GMSIcg7EE<ZsT8N+N,PV&n!G90E8aEG4:k1&lkutm(r;mGfGpXle1;Gf>8-*X`ZP.Xo/Z42ZLZ1G&0n^D'(cH@',L@hhs/0OZZbG=R4j(QZ$;:Eg[n5jIk.f%!e9-Q<@?(\hB@0h:>/GHE`]q0+KV#9>,f:-^ig<HE#OS6-2F8P(E<,hpAOMG:e8-FFt/1>`?NJQ88G!'i"84kDCp`NWd1Z,9A3#%_^N/&E2?Z:ddco;KU;m#'T2&O"]RiGK4aUk27b*X/`6?>3qM@8soV#D+ViIQo3hni-7U>If9Lc85mCX*V&b"#_ej#7BGd&HR)&/jYdNE*83^"o3:QT_I#mk&iLIN-(J3(HdON>="u-Y@rSQ[AiK2jNoN+YN\r[)Rn5,GF'g6<6)=[(<[=Npl%6N-$k@%56XlH1%4qsO8rFXoK[9#')KHg(!9G\RJZFc<`Y\ka+%[=%Q3GYTHE;-2daVJHl'oXJA^t!f^Tbt8-Dq/0;j9O^_Eh)94j[R(Bq"+O+G.0EpVD$[%jLH*2DDcLCS(.j,ctiVh7DPG?F;W+nn(8pf1'-K;^OM2eR*N?("tYemI2'a&9+)Wle,tTbmr7:MW2$(QrBc3nLV;0/D'V!72VJI%*aD4FaZ88L4.*=7>2\Y,g>4m,'\s3aR6);EW[FH"XGJI4j0">XJ'?)eZk<UFdm:Gp:3P$sq;@N]#3(h7g]NgR&\e5^+d?Tr/DPTE7$i:^H`K.e6q=49`LuT&r_TNjI29q<PPMcNs;-k`rE,dA!Os#BAG&l6j.6'm<]fm],fp32rfW1J=9?WX_-dr.&)t3H;*'hHArj9VPD.CE:h.YP1JZPBrZK*mI0Srr(m,(NZ72PRP*+DjuH6U;1j!0L-PG&?gd&MtT-@cT"M/Q[u!$U%X"$Tj6J<*(.?2.*^MH&0hq*:WiH[7?h*^R+Oq67q6U#:E3q]3Hk(LOpS7OD$oGnGp]e#G'nT-n[?"i1?I]&RA^H9U>T7l(!7=Ba0G2U!+Y@b8H;ER_>%J*P#j@J/-892JS5!S2'Y=n+,<.bFoOhd+`<2'oYoKhWut%7QE9-uTne[E@em4.Zf1f$KH>O>N_5!DH#cA`L7fLTZ\8=^8fFTV=sXk]Uf[e0m"40TL5B-Ko`U$*_Qb9b1:<Y0##l=Kbq@W&H?IHWZT[7/i@a#Ap3?fJ/ZmH2=+g2]A0S6sN6$H+`R8#I_mb#u!MIJ#MLj/ZTuh#P!:+Z.D,"paR3#b5(Pt#@]r;g]3%1aaZOF6fsqq/"DX0F_B"aM<1Y[@\1k(%t,D`Sb+s?]ILsAE&jbrmt`J(658(dRd]I#R$5TiQBAPBHEASMT$*&.i(B%qi*q.0b8p@O$[FHs35tIs@+fes:HHQe!%1_Jm&G,^%*#F:l)&siSJeCmE4)N&D#i^lbpKqphtaKs[eOQ"H^-fLa<)0[rq<e5DU%(?<_]Z3p3$(;4Zpfjj,T_[j0RtC50nt`bWaT-rr_n/#^Q~> +Gas3,4V*,u&-h(+^Z%^"3.%LhiG,*>K8Hk&EBj[pJtRpVrd2hD\eoM3S,7GJk/:dB"#6eY>V7:l"G-26^^;Bl1mhAImL7iXr]"GT[]$76$mANm3&RKTfG*^9mJ=:'G2S\C1dKK]Hh,FDl5DQXa>".\Wie)s:ZbDWL\L`gCQ/O?T;>=X#.[ioRJV6O>#\G8QltqWQ$%D3o")r#;\bS:^.FgWDr,5fs6?j75;O)JBH-qC08.tIZ2~> endstream endobj 242 0 obj @@ -1541,10 +1541,10 @@
endobj 243 0 obj -<< /Length 243 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1321 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gas3-bmK%f&-1Yc5/eN5i&(>kY$M8nF9nVS70fkn"Of,YHMc9X,)DW00L+GgC>!tX5nFs6_%r!&A/rYq#O]b<L*VpU^n+pqbO,UZm]3e<lMs7[$mp_9J_?pcDu%bi#-\3AoP=YXf_=SgW(i5U;Br\d)i)m7B%^aC?p(MM7\F'Jq5eX6YVf)@gCmbc8GlkSgl,Rqk/X]>4'.\A=BGAPmiK5hX\f#I-#qh#,c\tH`(,+T2?cT5~> +Gau`S?]Us?&:`$(5[15DPo9lHN6Oqr[+F-!Y,YN>2sO&b#EkIm&qQR(p@@TdK>BGKE[RE"RtnuCq>6ZOGl3$(=M4hY,QL[SM#<YY^i;uJ']DGpg+YE5U5Wt:Yt"'YK;VaGlN$S?_nJ1TJ%1Y:aZ7*,"*+G'#7NljnX@n(4u'D^<H@Q,i\CQ/J2$RpD\dA=hRA_dOZ('W>-8e85mYe#("nBP\UC'l>,!Xl?l',4D?Z(gI>u&4A3eV;<hMQ$hk.iisf`=Rm&S&XiefCOlCT7Gp[''tH_=@2&H2\9fj\XssR`M;MP7K)a#[)6556/<9"9<W\K!j)AQ(Vk8tD3N8#tdD?J"+XX>`UH$aNQ<-da#luc8U!.>eGLh6i=`*tW"d(]k3'\TOJV2$S0d<5"7351:Pa12&_5n#Q(KXaB46]SaWmP)qX+BGoWp7[L@[iV5.W<VY29h0.NU!+T#=9**;^/\IZ3@uD8tE/PY7*r=q\C=BRCE9S,Piu7;;PKVqkIt2in"AbMG;$,VjIV/(26&YZGHB$Ee*Fhg?3q@"(jO@CKa>s2up.[G;/Xl(&<AK`\h[SUr::%d0s:.'2+NM)oTX,gF@M(fM6jf+5X@i/Rmp(?puD8.MMOj[2)h#EkW_hJ\Fi]Gi97,DdL:`Vmi`bcGQk"^8D3h?'dnT%qo-[uOBN;=D,##^OC"<lKtXGE3M(SMR,qU.!i46bIO>95+31g8f*_I%m:@)h?f@giMhfVa[0F/YLUEQqU/'0d)VEf6ga'&cjhNi*UTL=?0'VDNbme+:)q-&.$h5!,:c<'.\9YT:L7CC4K8:`AUJXW%U=!;ngBV;IT#=^&_:+^2]"ic_OY=X&#ZSNB3ANhWH_a'#0_IG-I8db7H*f&rbYq6n8lnuUJ$79BVXr[4a]OdAF:#1?d;9j8WpUg0iNH_o^(3NDa;2d)]_1o>:5";G5V[i1i&-0glBFZaMBcF4AL2oTCoNM)'P+#`k;P'FR&+1#7mjVbcgS,LXgk$]*9(eP8PWtV1$.93G.>cep,Q'Bg+[`2<QMNpe3b:qck&reZCHI<BDJ^E#/][PK5*Fi7)>5-]l8Fh#`YgYE`kpqb.fF"8;`O"&Wf&#Hl71k>(*Y8;.rI4M5DBo1MGh%QX=oFO]lW(7nPj:79#>&E%5;D$iSiQ7jk;8Iai8"+Tq?geSA#^V_Y=8F."UjG*),^>6Hu/.'pG&tegpS0%%$3-J/$F75U@+]@=ORV@bVB(9X1I[-2dMN-6_BB%G[<$e[ZC3<NQUQHXZO5b:g]EFRdE2rHcO%KcmnJBATGgH/*s'DG6&3rrJ'WeK4~ endstream endobj 244 0 obj @@ -1556,10 +1556,10 @@
endobj 245 0 obj -<< /Length 1301 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1048 /Filter [ /ASCII85Decode /FlateDecode ]
stream -Gau`S>Ar7S'Roe[&2IWdJ=.`Q8X'Qu5e<aVLETc(@kZ"HA=Kk2aHB1f>Q+#7B[J"Q=gADLB`&G3OQZ>.$P2,IB8^u`,;I'l17M]j4!Pf$+7Y/JJ]MedHkq"N^%_:"9=j9shETlfGMifkJm0jo,Dpo6pani[MTn76,o><FSr8k-jmg0Vqk6&q5G+G6GAsiCbLCoSG!d+fa[FF:[]=%67'>1:SY7*pB/I3X%OHqM8LriMZ)H,)*EP"L+BF.LM#k!A#/(-M6r4lr7219a![ki4IlB^bF^7UJ'7[C_V>-D'F'dI'=srUq5r">P*X2_c^\hj!%r&_h!O"29&IW9qs!YA$Seq&KZAbK1iJ9dAMiCC)/'T$V[L9$IiI6<o+EgR!9h-;GI?mBe1fZ+rYr1iFg)3rAekXfZZ4_:c6:QdJ&QS;0=fg&o=r!qB\g5s;RS<6#Hn[G'3b`UD-(FEdTQIX8pl,:\TG\V4gq'usM8T0Q+Ap]nU:YG(IIUNo"l6KUf^0HL+PA:t8.<HSA)@<eUM640FU+9oO^4,J\oP6*W6C67o5fONdtKc)@&TF4<;Pb,sCcLD=X8_@^>*Y"9hB`_YE^$NsXT/b(_JGgJ8%ZU>Hu:T2!ts'8B'=1/+1rdr<+mZcT`W7%TlJA%+_hC>W-DF]Xg^3]C)"'dNOgDPVqY-FYa:2MG@=@XlJ0\r+p>Pf;`u+n-0*9RGU?).j4J])h,d>O0p)Ss<$TZ%,^U0cCfGL'VBEa0+[2:_k4ha!&1^QEand>2?&(l^edRL1,VPOPb`!G!,;0/]C$7Is$RC&WE9pT%pp1OAU[p"HpMo,."Xg6pn?:1W3:3?1CmsG<1&)>jl4VCj2(8Me9``d\X@b`2jJ<Ja_6Wb#>D5,D\A>l$rs2mTCYVY%CE#rSl.^lf#'qWrp+VdWt`5/h[2g6d[ON*&%_Xc2ErW@G<TY1I^i$+,`abMm[2WM#$mT3h!TJ@IgETC[1XTT8KbB")jUqTsFA#a?g+ar/U,Pc.#rW#$hI"n:e1>N2BVj?eR"4YY[V'9+[lHINL;&j=<hWQK@p9?)aWLJ:jV$NhA3D19Ypm&eTCk5CUiYc8;V73]9#pM2E4p$3.oBtkf/,Yt9<?L/)q?L?meS,7;dr.bt+2dCo#kdLUCq0?pGg8&]$`D"+<X]"p:eQ'_Mjq#<"E9J9rNLW2.H8$Ram++VZVR9DK!/+DW5>@nH<Ki<:J>h2q'T#uD3rT^T9ln1m0gUUR0PDG5c7]@:e@8>?8h[7Hb8VdMulC#T"B5u5X=6f5Z+2dG"@VhrrJ["dD#~> +Gasao;/b2K%"?O+d+btG_Uu.?fmW1t($K'ci6Z;XYjF`!j?tpso%?dDr;2[h4,Vg`1DECU;'Pgm'Ige$c5)HQ_D*<-KU2Eb5jMR/!qR3PL*8f=8V+ki/[sruc$`_%[?A:Bd2XqHBbI3Uh;!XDT2aY9U>V$\l5'=`b<NT]!O.Bg62U_95S,;KJG8o5$I)X"ZhT,Ta=&<'j]R%YI!dtX&JPGhoskNL'f67?+]2nB<UX,J1^/JKPRo@#)XZV9M:-*,>OBbX%4)*&;7u_FbLh_0pmT<-7-ueo!NFFo1EpAP"k>Z6+flFMW+mIo=])7<_O'^W2V*b*TGg*C:E#8R\m`%/9Z:ki?a2ZV.CHlo`)`^o9.=U>5q@?2gdiO)q?T8*?B#+&n2;*>ok$7\WcKSh`l^F:M3<j9<AF^R3)=8laIAHk"Mr(A<dnAe[]n'S324die.;DrimOd52Q;s;*':8OI5f4Y&s9YM%(*,fiIid3'aTi<@2`lXT^-#/BUTb,I41QA6Ha6/%V]!CW6:qK$t.i[ifI'#2lnSe_!h0+I@dT9_pe);$9JUdp@mD51Y_G66YZ81.)'Rl5OrlFWiOdAS7Fq-k^mrLX49[V$dS5b!tNYQtj3o`PA]r1?uDd?b`U5[[-M$W>9h0%dgjD?%Ed(?KLmYccEUfYDm.'C;DUlR!^a0P%oDf`fbN!i8MMn)c<#fZ,E-.f$C#MC?:!4h@=JActGSDjgH_#':0r$),T<+.<kGsC>Q5F2N;@u<I:Ak.s(B+F`aWWX+j8iSs0U7S4:;]n+b%@5g49h7jBce[1i+\ceR\I_Tnl-r8!i9W2ARn]Fo!_2q@HCe2'JpTU>Rnp:QRdV<GN0K6cCiCkNFJ>M*8'm/,Ri"':ILrF!,*WStISl.Lh@`&.#+>fg5E6:beVg[nG/XUDeB`JDJ59NQ)7B,QKMqtD_h\eGlt>#-uZmIc67[g/Mjd])]h=7c=Ve5?U+2o(#otthDDtertGqejg6VO(Tfh=5%$'`d8T"S?g2prP;Mu-7(K@%%g$m0d@FWpbeS7PmD~> endstream endobj 246 0 obj @@ -1568,53 +1568,71 @@ /MediaBox [ 0 0 612 792 ] /Resources 3 0 R /Contents 245 0 R +/Annots 247 0 R
endobj 247 0 obj -<< /Length 182 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gas3+57>=^&-_S%5/iLBoXrA^FtW":+:-Z=5qseh9ei-phIr`<,.B]&4at)"e]+=;1&;07!sip15uFgubDN)aJ&B052s*@u4JL`Mg;A?-:GX5+dC_9e<!#PA6gnY_3CfXFFkP#I9_m,TZ%Ospk*jTW<$&f&B1W'a2,!><-M+LEq+=G6UG??~> -endstream +[ +248 0 R +249 0 R +250 0 R +251 0 R +252 0 R +253 0 R +254 0 R +] endobj 248 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 247 0 R +<< /Type /Annot +/Subtype /Link +/Rect [ 345.52 637.683 367.18 627.683 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://uffi.b9.com) +/S /URI >> +/H /I
endobj 249 0 obj -<< /Length 1022 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat%"gMYb"%"6H'k\Y1A.)+nSpFU5`TL1GABXV>_qk,ohU<Sf_>=k-qT6uQuUiSEs#]qJW4=!A<2m^om4p1n<;&"Ub3qC(,j9*a+Hp@et!><A5+:;^rn9ct8F"S9gpE^X]PeoEN@KJ0Zd)?O$e1Ae1(.qnb="sO(3:S+#8`dm5J2-[me2Xs:4..P+32iN0e9jkrA42I?Qi$Z8K,+[*B2&&BJkA9p%n8Np1qp"b`LFdWK+#fs_BQ,KH?#U"fNn$"-Z\2q#*#nf_'BA?%<MDJN,,>97F/m[r0Y]XXt0sZs^r;",oP\6;1\N/%+LAKL0.J)&rhM][AjUSkM%V.c<FDM-@Z#JkGV9=tWQR=]VPP8b.aU4$#kHo4(FD)$Sph_Fc%Mq7[)6g&og%]6i2J&,jb$c*'JdV%3KcL\Eq_F<?`q+HpWJE1@3e"2gH3HP$[72[d+(O4-nfYI`+DWSDC#K;I99#u=R+jA9k[aU@co-b>fn8]IPTkST_-i.LG!67ZbBgOb)M$[POq9'WoIOG_7O)4rTPVNKo+\ssR!/bc+(CRBr658u89WR^B>"kT*IU!ePIY>58rp1XYdmi'XY+)2NT-BJd?V9=(g/Pkr./B)idjCBe9Y1bhE8c==-MmWJa,OVtj\Ij]n'cC4Hp=&T#e<'iY\GWjh-a#902.OBjNP9j:+'Rm@=`*(]Q9`]MADLeSS.hNZA46&JmBSrVHaST-#-,K,Ft^G*Hb5HgT6:G'dZIe-=f=iVj0bl#Usm*T:+Ec>](5sOV+mfCO_>Sc$^F2NN2!i<sb5)@+i'J92Xt`Il6k'&.aqS\7W1N&8[s.AeYKs4N-,X>k2`;fN,:rLN<oJ9PTL>EEo[Xmp37U32057+<lq@k"OnKp0g@NX4,@`pX\l3j@:a^@+o=C50JLqXhQ]<<]Mh#Xt10gDQe8l-dJ^E"l,*k@W\TrVk,J)mA?eIT"6YNAKXk!>+iA+EU$4gQUt84T:B2m_Os"MsTPEsJ>/?f)pWI?7lR?2ako:J":~> -endstream +<< /Type /Annot +/Subtype /Link +/Rect [ 373.595 637.683 444.155 627.683 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://uffi.b9.com) +/S /URI >> +/H /I +>> endobj 250 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 612 792 ] -/Resources 3 0 R -/Contents 249 0 R -/Annots 251 0 R +<< /Type /Annot +/Subtype /Link +/Rect [ 582.79 626.683 614.47 616.683 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://www.sourceforge.net/projects/cclan) +/S /URI >> +/H /I
endobj 251 0 obj -[ -252 0 R -253 0 R -254 0 R -] +<< /Type /Annot +/Subtype /Link +/Rect [ 626.66 626.683 641.1 616.683 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://www.sourceforge.net/projects/cclan) +/S /URI >> +/H /I +>> endobj 252 0 obj << /Type /Annot /Subtype /Link -/Rect [ 345.52 637.683 367.18 627.683 ] +/Rect [ 120.0 615.683 280.52 605.683 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] -/A << /URI (http://uffi.b9.com) +/A << /URI (http://www.sourceforge.net/projects/cclan) /S /URI >> /H /I
@@ -1622,10 +1640,10 @@ 253 0 obj << /Type /Annot /Subtype /Link -/Rect [ 628.87 626.683 660.55 616.683 ] +/Rect [ 156.67 604.683 172.22 594.683 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] -/A << /URI (http://www.sourceforge.net/projects/cclan) +/A << /URI (http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/cclan/asdf/asdf.lisp) /S /URI >> /H /I
@@ -1633,7 +1651,7 @@ 254 0 obj << /Type /Annot /Subtype /Link -/Rect [ 178.61 604.683 194.16 594.683 ] +/Rect [ 178.05 604.683 440.79 594.683 ] /C [ 0 0 0 ] /Border [ 0 0 0 ] /A << /URI (http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/cclan/asdf/asdf.lisp) @@ -1642,10 +1660,10 @@
endobj 255 0 obj -<< /Length 286 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 280 /Filter [ /ASCII85Decode /FlateDecode ]
stream -GarVI4)]a*&Dm@9D@Am;T3oANU/7[j,]?6ZJfq?%\95m>IpYQp5Ua5*e(sc.]?H@t>QC*I8HbEL0Xq\t(()5IP^uS-WauU9L%FH5EVFh=s!%4Bo+e&.O9JMn:*Sad6Rt__:7nQAq9%R*#e#QR0\tfNY3`8p[Z4X#q77uTQhSWuMM5Dd]L47gf5dZ=@X!Gf=/3Buh5=<BAmEQ!^F`ag;tTe;/BEgaqJ\BAV&g'@ID0IO/s]$Ca:Yb/Hj)AfOj'n`@7g!T2k;*/L7&ZrqRFspj?LXV@-.~> +GarVI]afWJ&Dm9u2p,Oq5;7s,UROh6F[-#*#uI``q">Jf5_uu4bMDo6GDSeiPQMRYME'f4&&tk`#",h@0.p9YnA5D)GZ2rAY7;m]`Ycp5'X%08j(3'#8(NQ6V2iC(k5PbFbR@`!A#[Z]BLMf20j!(['ai+_Ne81r4HZkJku<mrAg7mQkK#CF_B$2mqtVhU".j/B-Z1_F'IP.em,6^\M@7Ln&E,lX[\B?X8;3M.Bs$'A)`V$TL;;7kW.$DaoCpd1H;(W-5@RcY/hIU!Qcp$l2~> endstream endobj 256 0 obj @@ -2227,21 +2245,29 @@ /BaseFont /Courier /Encoding /WinAnsiEncoding >> endobj +332 0 obj +<< /Type /Font +/Subtype /Type1 +/Name /F7 +/BaseFont /Times-Bold +/Encoding /WinAnsiEncoding >> +endobj 1 0 obj << /Type /Pages -/Count 62 -/Kids [6 0 R 8 0 R 10 0 R 12 0 R 121 0 R 140 0 R 142 0 R 144 0 R 146 0 R 148 0 R 150 0 R 152 0 R 154 0 R 156 0 R 158 0 R 160 0 R 162 0 R 164 0 R 166 0 R 168 0 R 170 0 R 172 0 R 174 0 R 176 0 R 178 0 R 180 0 R 182 0 R 184 0 R 186 0 R 188 0 R 190 0 R 192 0 R 194 0 R 196 0 R 198 0 R 200 0 R 202 0 R 204 0 R 206 0 R 208 0 R 210 0 R 212 0 R 214 0 R 216 0 R 218 0 R 220 0 R 222 0 R 224 0 R 226 0 R 228 0 R 230 0 R 232 0 R 234 0 R 236 0 R 238 0 R 240 0 R 242 0 R 244 0 R 246 0 R 248 0 R 250 0 R 256 0 R ] >> +/Count 60 +/Kids [6 0 R 8 0 R 10 0 R 12 0 R 121 0 R 140 0 R 142 0 R 144 0 R 146 0 R 148 0 R 150 0 R 152 0 R 154 0 R 156 0 R 158 0 R 160 0 R 162 0 R 164 0 R 166 0 R 168 0 R 170 0 R 172 0 R 174 0 R 176 0 R 178 0 R 180 0 R 182 0 R 184 0 R 186 0 R 188 0 R 190 0 R 192 0 R 194 0 R 196 0 R 198 0 R 200 0 R 202 0 R 204 0 R 206 0 R 208 0 R 210 0 R 212 0 R 214 0 R 216 0 R 218 0 R 220 0 R 222 0 R 224 0 R 226 0 R 228 0 R 230 0 R 232 0 R 234 0 R 236 0 R 238 0 R 240 0 R 242 0 R 244 0 R 246 0 R 256 0 R ] >> endobj 2 0 obj << /Type /Catalog /Pages 1 0 R /Outlines 257 0 R /PageMode /UseOutlines + /Names << /Dests << /Names [ (preface) [ 140 0 R /XYZ 115.0 725.0 null ] (introduction) [ 142 0 R /XYZ 115.0 725.0 null ] (notes) [ 146 0 R /XYZ 115.0 725.0 null ] (ref_declarations) [ 150 0 R /XYZ 115.0 725.0 null ] (primitives) [ 154 0 R /XYZ 115.0 725.0 null ] (aggregates) [ 162 0 R /XYZ 115.0 725.0 null ] (objects) [ 182 0 R /XYZ 115.0 725.0 null ] (strings) [ 216 0 R /XYZ 115.0 725.0 null ] (func_libr) [ 234 0 R /XYZ 115.0 725.0 null ] (installation) [ 246 0 R /XYZ 115.0 725.0 null ] (glossary) [ 256 0 R /XYZ 115.0 725.0 null ] (id2254977) [ 10 0 R /XYZ 115.0 725.0 null ] ] >> >>
endobj 3 0 obj << -/Font << /F3 325 0 R /F5 326 0 R /F10 327 0 R /F6 329 0 R /F1 328 0 R /F4 330 0 R /F9 331 0 R >> +/Font << /F3 325 0 R /F5 326 0 R /F10 327 0 R /F6 329 0 R /F1 328 0 R /F4 330 0 R /F9 331 0 R /F7 332 0 R >> /ProcSet [ /PDF /ImageC /Text ] >> endobj 15 0 obj @@ -2349,7 +2375,7 @@ 49 0 obj << /S /GoTo -/D [null /XYZ 0.0 0.0 null] +/D [150 0 R /XYZ 115.0 725.0 null]
endobj 51 0 obj @@ -2361,7 +2387,7 @@ 53 0 obj << /S /GoTo -/D [154 0 R /XYZ 115.0 678.347 null] +/D [154 0 R /XYZ 115.0 725.0 null]
endobj 55 0 obj @@ -2385,7 +2411,7 @@ 61 0 obj << /S /GoTo -/D [162 0 R /XYZ 115.0 678.347 null] +/D [162 0 R /XYZ 115.0 725.0 null]
endobj 63 0 obj @@ -2433,7 +2459,7 @@ 77 0 obj << /S /GoTo -/D [182 0 R /XYZ 115.0 678.347 null] +/D [182 0 R /XYZ 115.0 725.0 null]
endobj 79 0 obj @@ -2517,7 +2543,7 @@ 105 0 obj << /S /GoTo -/D [216 0 R /XYZ 115.0 678.347 null] +/D [216 0 R /XYZ 115.0 725.0 null]
endobj 107 0 obj @@ -2547,61 +2573,61 @@ 115 0 obj << /S /GoTo -/D [230 0 R /XYZ 115.0 725.0 null] +/D [228 0 R /XYZ 115.0 725.0 null]
endobj 117 0 obj << /S /GoTo -/D [232 0 R /XYZ 115.0 725.0 null] +/D [230 0 R /XYZ 115.0 725.0 null]
endobj 119 0 obj << /S /GoTo -/D [234 0 R /XYZ 115.0 725.0 null] +/D [232 0 R /XYZ 115.0 725.0 null]
endobj 124 0 obj << /S /GoTo -/D [236 0 R /XYZ 115.0 725.0 null] +/D [234 0 R /XYZ 115.0 725.0 null]
endobj 126 0 obj << /S /GoTo -/D [238 0 R /XYZ 115.0 725.0 null] +/D [236 0 R /XYZ 115.0 725.0 null]
endobj 128 0 obj << /S /GoTo -/D [242 0 R /XYZ 115.0 725.0 null] +/D [240 0 R /XYZ 115.0 725.0 null]
endobj 130 0 obj << /S /GoTo -/D [246 0 R /XYZ 115.0 725.0 null] +/D [244 0 R /XYZ 115.0 725.0 null]
endobj 132 0 obj << /S /GoTo -/D [250 0 R /XYZ 115.0 725.0 null] +/D [246 0 R /XYZ 115.0 725.0 null]
endobj 134 0 obj << /S /GoTo -/D [250 0 R /XYZ 115.0 687.009 null] +/D [246 0 R /XYZ 115.0 687.009 null]
endobj 136 0 obj << /S /GoTo -/D [250 0 R /XYZ 115.0 599.683 null] +/D [246 0 R /XYZ 115.0 599.683 null]
endobj 138 0 obj @@ -2634,345 +2660,346 @@
endobj xref -0 332 +0 333 0000000000 65535 f -0000086303 00000 n -0000086846 00000 n -0000086939 00000 n +0000087336 00000 n +0000087863 00000 n +0000088550 00000 n 0000000015 00000 n 0000000071 00000 n -0000000352 00000 n -0000000458 00000 n -0000001520 00000 n -0000001626 00000 n -0000001787 00000 n -0000001894 00000 n -0000003922 00000 n -0000004045 00000 n -0000004446 00000 n -0000087092 00000 n -0000004582 00000 n -0000087158 00000 n -0000004718 00000 n -0000087224 00000 n -0000004854 00000 n -0000087292 00000 n -0000004990 00000 n -0000087360 00000 n -0000005126 00000 n -0000087428 00000 n -0000005262 00000 n -0000087496 00000 n -0000005398 00000 n -0000087564 00000 n -0000005534 00000 n -0000087630 00000 n -0000005670 00000 n -0000087696 00000 n -0000005806 00000 n -0000087764 00000 n -0000005942 00000 n -0000087832 00000 n -0000006078 00000 n -0000087900 00000 n -0000006214 00000 n -0000087968 00000 n -0000006350 00000 n -0000088036 00000 n -0000006486 00000 n -0000088103 00000 n -0000006622 00000 n -0000088171 00000 n -0000006758 00000 n -0000088239 00000 n -0000006894 00000 n -0000088298 00000 n -0000007030 00000 n -0000088364 00000 n -0000007166 00000 n -0000088432 00000 n -0000007302 00000 n -0000088498 00000 n -0000007438 00000 n -0000088564 00000 n -0000007574 00000 n -0000088630 00000 n -0000007710 00000 n -0000088698 00000 n -0000007846 00000 n -0000088764 00000 n -0000007982 00000 n -0000088830 00000 n -0000008118 00000 n -0000088896 00000 n -0000008254 00000 n -0000088962 00000 n -0000008389 00000 n -0000089028 00000 n -0000008525 00000 n -0000089094 00000 n -0000008661 00000 n -0000089160 00000 n -0000008796 00000 n -0000089228 00000 n -0000008932 00000 n -0000089294 00000 n -0000009068 00000 n -0000089360 00000 n -0000009204 00000 n -0000089426 00000 n -0000009340 00000 n -0000089492 00000 n -0000009476 00000 n -0000089558 00000 n -0000009611 00000 n -0000089624 00000 n -0000009747 00000 n -0000089690 00000 n -0000009883 00000 n -0000089756 00000 n -0000010019 00000 n -0000089822 00000 n -0000010155 00000 n -0000089888 00000 n -0000010291 00000 n -0000089954 00000 n -0000010429 00000 n -0000090021 00000 n -0000010567 00000 n -0000090088 00000 n -0000010705 00000 n -0000090157 00000 n -0000010843 00000 n -0000090224 00000 n -0000010981 00000 n -0000090291 00000 n -0000011119 00000 n -0000090358 00000 n -0000011257 00000 n -0000090425 00000 n -0000011394 00000 n -0000090492 00000 n -0000011530 00000 n -0000090559 00000 n -0000011666 00000 n -0000012265 00000 n -0000012391 00000 n -0000012476 00000 n -0000090626 00000 n -0000012610 00000 n -0000090693 00000 n -0000012744 00000 n -0000090760 00000 n -0000012878 00000 n -0000090827 00000 n -0000013012 00000 n -0000090894 00000 n -0000013146 00000 n -0000090961 00000 n -0000013280 00000 n -0000091030 00000 n -0000013414 00000 n -0000091099 00000 n -0000013548 00000 n -0000014206 00000 n -0000014316 00000 n -0000016365 00000 n -0000016475 00000 n -0000017651 00000 n -0000017761 00000 n -0000020167 00000 n -0000020277 00000 n -0000020735 00000 n -0000020845 00000 n -0000021401 00000 n -0000021511 00000 n -0000022412 00000 n -0000022522 00000 n -0000023804 00000 n -0000023914 00000 n -0000024967 00000 n -0000025077 00000 n -0000025901 00000 n -0000026011 00000 n -0000027198 00000 n -0000027308 00000 n -0000027688 00000 n -0000027798 00000 n -0000029585 00000 n -0000029695 00000 n -0000030019 00000 n -0000030129 00000 n -0000031265 00000 n -0000031375 00000 n -0000032223 00000 n -0000032333 00000 n -0000033243 00000 n -0000033353 00000 n -0000034114 00000 n -0000034224 00000 n -0000035421 00000 n -0000035531 00000 n -0000035870 00000 n -0000035980 00000 n -0000036961 00000 n -0000037071 00000 n -0000037465 00000 n -0000037575 00000 n -0000038630 00000 n -0000038740 00000 n -0000039424 00000 n -0000039534 00000 n -0000040883 00000 n -0000040993 00000 n -0000041909 00000 n -0000042019 00000 n -0000042717 00000 n -0000042827 00000 n -0000043949 00000 n -0000044059 00000 n -0000044387 00000 n -0000044497 00000 n -0000045663 00000 n -0000045773 00000 n -0000046880 00000 n -0000046990 00000 n -0000047770 00000 n -0000047880 00000 n -0000048625 00000 n -0000048735 00000 n -0000049250 00000 n -0000049360 00000 n -0000051132 00000 n -0000051242 00000 n -0000051585 00000 n -0000051695 00000 n -0000053137 00000 n -0000053247 00000 n -0000053943 00000 n -0000054053 00000 n -0000056145 00000 n -0000056255 00000 n -0000056624 00000 n -0000056734 00000 n -0000057542 00000 n -0000057652 00000 n -0000058457 00000 n -0000058567 00000 n -0000059308 00000 n -0000059418 00000 n -0000060548 00000 n -0000060658 00000 n -0000060926 00000 n -0000061036 00000 n -0000062117 00000 n -0000062227 00000 n -0000062953 00000 n -0000063063 00000 n -0000064038 00000 n -0000064148 00000 n -0000064439 00000 n -0000064549 00000 n -0000066018 00000 n -0000066128 00000 n -0000066456 00000 n -0000066566 00000 n -0000068176 00000 n -0000068286 00000 n -0000068622 00000 n -0000068732 00000 n -0000070127 00000 n -0000070237 00000 n -0000070512 00000 n -0000070622 00000 n -0000071738 00000 n -0000071864 00000 n -0000071909 00000 n -0000072080 00000 n -0000072274 00000 n -0000072494 00000 n -0000072873 00000 n -0000091166 00000 n -0000091220 00000 n +0000000363 00000 n +0000000469 00000 n +0000001525 00000 n +0000001631 00000 n +0000001792 00000 n +0000001899 00000 n +0000003924 00000 n +0000004047 00000 n +0000004448 00000 n +0000088715 00000 n +0000004584 00000 n +0000088781 00000 n +0000004720 00000 n +0000088847 00000 n +0000004856 00000 n +0000088915 00000 n +0000004992 00000 n +0000088983 00000 n +0000005128 00000 n +0000089051 00000 n +0000005264 00000 n +0000089119 00000 n +0000005400 00000 n +0000089187 00000 n +0000005536 00000 n +0000089253 00000 n +0000005672 00000 n +0000089319 00000 n +0000005808 00000 n +0000089387 00000 n +0000005944 00000 n +0000089455 00000 n +0000006080 00000 n +0000089523 00000 n +0000006216 00000 n +0000089591 00000 n +0000006352 00000 n +0000089659 00000 n +0000006488 00000 n +0000089726 00000 n +0000006624 00000 n +0000089794 00000 n +0000006760 00000 n +0000089862 00000 n +0000006896 00000 n +0000089928 00000 n +0000007032 00000 n +0000089994 00000 n +0000007168 00000 n +0000090060 00000 n +0000007304 00000 n +0000090126 00000 n +0000007440 00000 n +0000090192 00000 n +0000007576 00000 n +0000090258 00000 n +0000007712 00000 n +0000090324 00000 n +0000007848 00000 n +0000090390 00000 n +0000007984 00000 n +0000090456 00000 n +0000008120 00000 n +0000090522 00000 n +0000008256 00000 n +0000090588 00000 n +0000008391 00000 n +0000090654 00000 n +0000008527 00000 n +0000090720 00000 n +0000008663 00000 n +0000090786 00000 n +0000008798 00000 n +0000090852 00000 n +0000008934 00000 n +0000090918 00000 n +0000009070 00000 n +0000090984 00000 n +0000009206 00000 n +0000091050 00000 n +0000009342 00000 n +0000091116 00000 n +0000009478 00000 n +0000091182 00000 n +0000009613 00000 n +0000091248 00000 n +0000009749 00000 n +0000091314 00000 n +0000009885 00000 n +0000091380 00000 n +0000010021 00000 n +0000091446 00000 n +0000010157 00000 n +0000091512 00000 n +0000010293 00000 n +0000091578 00000 n +0000010431 00000 n +0000091645 00000 n +0000010569 00000 n +0000091712 00000 n +0000010707 00000 n +0000091779 00000 n +0000010845 00000 n +0000091846 00000 n +0000010983 00000 n +0000091913 00000 n +0000011121 00000 n +0000091980 00000 n +0000011259 00000 n +0000092047 00000 n +0000011396 00000 n +0000092114 00000 n +0000011532 00000 n +0000092181 00000 n +0000011668 00000 n +0000012297 00000 n +0000012423 00000 n +0000012508 00000 n +0000092248 00000 n +0000012642 00000 n +0000092315 00000 n +0000012776 00000 n +0000092382 00000 n +0000012910 00000 n +0000092449 00000 n +0000013044 00000 n +0000092516 00000 n +0000013178 00000 n +0000092583 00000 n +0000013312 00000 n +0000092652 00000 n +0000013446 00000 n +0000092721 00000 n +0000013580 00000 n +0000014239 00000 n +0000014349 00000 n +0000016398 00000 n +0000016508 00000 n +0000017682 00000 n +0000017792 00000 n +0000020198 00000 n +0000020308 00000 n +0000020766 00000 n +0000020876 00000 n +0000021431 00000 n +0000021541 00000 n +0000022465 00000 n +0000022575 00000 n +0000023859 00000 n +0000023969 00000 n +0000025037 00000 n +0000025147 00000 n +0000025980 00000 n +0000026090 00000 n +0000027295 00000 n +0000027405 00000 n +0000027786 00000 n +0000027896 00000 n +0000029730 00000 n +0000029840 00000 n +0000030101 00000 n +0000030211 00000 n +0000031361 00000 n +0000031471 00000 n +0000032434 00000 n +0000032544 00000 n +0000033472 00000 n +0000033582 00000 n +0000034353 00000 n +0000034463 00000 n +0000035683 00000 n +0000035793 00000 n +0000036122 00000 n +0000036232 00000 n +0000037226 00000 n +0000037336 00000 n +0000037730 00000 n +0000037840 00000 n +0000038906 00000 n +0000039016 00000 n +0000039714 00000 n +0000039824 00000 n +0000041191 00000 n +0000041301 00000 n +0000042234 00000 n +0000042344 00000 n +0000043055 00000 n +0000043165 00000 n +0000044326 00000 n +0000044436 00000 n +0000044702 00000 n +0000044812 00000 n +0000045998 00000 n +0000046108 00000 n +0000047225 00000 n +0000047335 00000 n +0000048126 00000 n +0000048236 00000 n +0000048996 00000 n +0000049106 00000 n +0000049631 00000 n +0000049741 00000 n +0000051407 00000 n +0000051517 00000 n +0000051851 00000 n +0000051961 00000 n +0000053450 00000 n +0000053560 00000 n +0000054224 00000 n +0000054334 00000 n +0000056530 00000 n +0000056640 00000 n +0000057076 00000 n +0000057186 00000 n +0000058005 00000 n +0000058115 00000 n +0000058941 00000 n +0000059051 00000 n +0000059810 00000 n +0000059920 00000 n +0000061075 00000 n +0000061185 00000 n +0000062279 00000 n +0000062389 00000 n +0000063134 00000 n +0000063244 00000 n +0000064238 00000 n +0000064348 00000 n +0000064639 00000 n +0000064749 00000 n +0000066260 00000 n +0000066370 00000 n +0000066636 00000 n +0000066746 00000 n +0000068631 00000 n +0000068741 00000 n +0000069079 00000 n +0000069189 00000 n +0000070604 00000 n +0000070714 00000 n +0000071856 00000 n +0000071982 00000 n +0000072059 00000 n +0000072230 00000 n +0000072403 00000 n +0000072597 00000 n +0000072790 00000 n 0000072983 00000 n -0000091286 00000 n -0000073187 00000 n -0000073388 00000 n -0000073530 00000 n -0000073808 00000 n -0000073935 00000 n -0000074095 00000 n -0000074344 00000 n -0000074507 00000 n -0000074640 00000 n -0000074785 00000 n -0000075092 00000 n -0000075391 00000 n -0000075530 00000 n -0000075684 00000 n -0000075799 00000 n -0000076135 00000 n -0000076415 00000 n -0000076560 00000 n -0000076841 00000 n -0000091352 00000 n -0000077055 00000 n -0000077189 00000 n -0000077321 00000 n -0000077552 00000 n -0000077708 00000 n -0000077902 00000 n -0000078051 00000 n -0000078282 00000 n -0000078414 00000 n -0000078573 00000 n -0000078755 00000 n -0000078949 00000 n -0000079149 00000 n -0000079314 00000 n -0000079452 00000 n -0000079637 00000 n -0000079858 00000 n -0000080070 00000 n -0000080282 00000 n -0000080499 00000 n -0000080688 00000 n -0000080865 00000 n -0000081089 00000 n -0000081301 00000 n -0000081501 00000 n -0000081683 00000 n -0000081911 00000 n -0000082112 00000 n -0000082286 00000 n -0000082471 00000 n -0000082675 00000 n -0000082882 00000 n -0000083054 00000 n -0000083226 00000 n -0000083486 00000 n -0000083734 00000 n -0000083956 00000 n -0000084222 00000 n -0000084379 00000 n -0000084598 00000 n -0000084802 00000 n -0000085088 00000 n -0000085251 00000 n -0000085379 00000 n -0000085513 00000 n -0000085627 00000 n -0000085738 00000 n -0000085854 00000 n -0000085963 00000 n -0000086075 00000 n -0000086196 00000 n +0000073203 00000 n +0000073423 00000 n +0000073796 00000 n +0000092788 00000 n +0000092842 00000 n +0000073906 00000 n +0000092908 00000 n +0000074110 00000 n +0000074311 00000 n +0000074453 00000 n +0000074731 00000 n +0000074858 00000 n +0000075018 00000 n +0000075267 00000 n +0000075430 00000 n +0000075563 00000 n +0000075708 00000 n +0000076015 00000 n +0000076314 00000 n +0000076453 00000 n +0000076607 00000 n +0000076722 00000 n +0000077058 00000 n +0000077338 00000 n +0000077483 00000 n +0000077764 00000 n +0000092974 00000 n +0000077978 00000 n +0000078112 00000 n +0000078244 00000 n +0000078475 00000 n +0000078631 00000 n +0000078825 00000 n +0000078974 00000 n +0000079205 00000 n +0000079337 00000 n +0000079496 00000 n +0000079678 00000 n +0000079872 00000 n +0000080072 00000 n +0000080237 00000 n +0000080375 00000 n +0000080560 00000 n +0000080781 00000 n +0000080993 00000 n +0000081205 00000 n +0000081422 00000 n +0000081611 00000 n +0000081788 00000 n +0000082012 00000 n +0000082224 00000 n +0000082424 00000 n +0000082606 00000 n +0000082834 00000 n +0000083035 00000 n +0000083209 00000 n +0000083394 00000 n +0000083598 00000 n +0000083805 00000 n +0000083977 00000 n +0000084149 00000 n +0000084409 00000 n +0000084657 00000 n +0000084879 00000 n +0000085145 00000 n +0000085302 00000 n +0000085521 00000 n +0000085725 00000 n +0000086011 00000 n +0000086174 00000 n +0000086302 00000 n +0000086436 00000 n +0000086550 00000 n +0000086661 00000 n +0000086777 00000 n +0000086886 00000 n +0000086998 00000 n +0000087119 00000 n +0000087226 00000 n trailer << -/Size 332 +/Size 333 /Root 2 0 R /Info 4 0 R
startxref -91421 +93043 %%EOF
Modified: branches/xml-class-rework/thirdparty/uffi/examples/Makefile =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/Makefile 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/Makefile 2006-10-22 16:42:37 UTC (rev 2025) @@ -5,13 +5,10 @@ # Programer: Kevin M. Rosenberg # Date Started: Mar 2002 # -# CVS Id: $Id: Makefile,v 1.1 2004/06/23 08:27:10 hans Exp $ +# CVS Id: $Id$ # -# This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +# This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg # -# UFFI users are granted the rights to distribute and use this software -# as governed by the terms of the Lisp Lesser GNU Public License -# (http://opensource.franz.com/preamble.html), also known as the LLGPL.
SUBDIRS:=
Modified: branches/xml-class-rework/thirdparty/uffi/examples/Makefile.msvc =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/Makefile.msvc 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/Makefile.msvc 2006-10-22 16:42:37 UTC (rev 2025) @@ -5,13 +5,9 @@ # Programer: Kevin M. Rosenberg # Date Started: Mar 2002 # -# CVS Id: $Id: Makefile.msvc,v 1.1 2004/06/23 08:27:10 hans Exp $ +# CVS Id: $Id$ # -# This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg -# -# CLSQL users are granted the rights to distribute and use this software -# as governed by the terms of the Lisp Lesser GNU Public License -# (http://opensource.franz.com/preamble.html), also known as the LLGPL. +# This file, part of CLSQL, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
BASE=c-test-fns
Modified: branches/xml-class-rework/thirdparty/uffi/examples/acl-compat-tester.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/acl-compat-tester.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/acl-compat-tester.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -24,7 +24,7 @@ ;; Place, Suite 330, Boston, MA 02111-1307 USA ;; ;;;; from the original ACL 6.1 sources: -;; $Id: acl-compat-tester.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;; $Id$
(defpackage :util.test
Modified: branches/xml-class-rework/thirdparty/uffi/examples/arrays.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/arrays.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/arrays.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Mar 2002 ;;;; -;;;; $Id: arrays.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package :cl-user) @@ -21,7 +18,7 @@ (uffi:def-constant +column-length+ 10) (uffi:def-constant +row-length+ 10)
-(uffi:def-foreign-type long-ptr '(* :long)) +(uffi:def-foreign-type long-ptr (* :long))
(defun test-array-1d () "Tests vector"
Modified: branches/xml-class-rework/thirdparty/uffi/examples/atoifl.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/atoifl.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/atoifl.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Mar 2002 ;;;; -;;;; $Id: atoifl.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package :cl-user)
Modified: branches/xml-class-rework/thirdparty/uffi/examples/c-test-fns.c =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/c-test-fns.c 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/c-test-fns.c 2006-10-22 16:42:37 UTC (rev 2025) @@ -6,14 +6,10 @@ * Programer: Kevin M. Rosenberg * Date Started: Mar 2002 * - * CVS Id: $Id: c-test-fns.c,v 1.1 2004/06/23 08:27:10 hans Exp $ + * CVS Id: $Id$ * - * This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg + * This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg * - * UFFI users are granted the rights to distribute and use this software - * as governed by the terms of the Lisp Lesser GNU Public License - * (http://opensource.franz.com/preamble.html), also known as the LLGPL. - * These variables are correct for GCC * you'll need to modify these for other compilers ***************************************************************************/
Modified: branches/xml-class-rework/thirdparty/uffi/examples/c-test-fns.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/c-test-fns.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/c-test-fns.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Mar 2002 ;;;; -;;;; $Id: c-test-fns.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package :cl-user)
Modified: branches/xml-class-rework/thirdparty/uffi/examples/compress.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/compress.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/compress.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: compress.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package :cl-user)
Modified: branches/xml-class-rework/thirdparty/uffi/examples/file-socket.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/file-socket.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/file-socket.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Jul 2002 ;;;; -;;;; $Id: file-socket.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package :cl-user)
Modified: branches/xml-class-rework/thirdparty/uffi/examples/getenv.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/getenv.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/getenv.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: getenv.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package :cl-user)
Modified: branches/xml-class-rework/thirdparty/uffi/examples/gethostname.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/gethostname.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/gethostname.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: gethostname.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package :cl-user)
Modified: branches/xml-class-rework/thirdparty/uffi/examples/getshells.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/getshells.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/getshells.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Mar 2002 ;;;; -;;;; $Id: getshells.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package :cl-user)
Modified: branches/xml-class-rework/thirdparty/uffi/examples/gettime.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/gettime.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/gettime.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: gettime.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package :cl-user)
Modified: branches/xml-class-rework/thirdparty/uffi/examples/run-examples.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/run-examples.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/run-examples.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: run-examples.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
#-uffi (asdf:oos 'asdf:load-op :uffi)
Modified: branches/xml-class-rework/thirdparty/uffi/examples/strtol.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/strtol.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/strtol.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: strtol.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package :cl-user)
Modified: branches/xml-class-rework/thirdparty/uffi/examples/test-examples.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/test-examples.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/test-examples.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: test-examples.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
#-uffi (asdf:oos 'asdf:load-op :uffi)
Modified: branches/xml-class-rework/thirdparty/uffi/examples/union.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/examples/union.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/examples/union.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Mar 2002 ;;;; -;;;; $Id: union.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package :cl-user) @@ -69,7 +66,7 @@ #\A :test #'eql :fail-info "Error with union character") - #-(or sparc sparc-v9 mcl) + #-(or sparc sparc-v9 openmcl digitool) ;; (util.test:test (> 0 (uffi:get-slot-value u 'tunion1 'int)) ;; t ;; :fail-info
Modified: branches/xml-class-rework/thirdparty/uffi/src/aggregates.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/src/aggregates.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/src/aggregates.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: aggregates.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package #:uffi) @@ -45,7 +42,7 @@ #+lispworks `((fli:define-c-typedef ,enum-name :int)) #+(or cmu scl) `((alien:def-alien-type ,enum-name alien:signed)) #+sbcl `((sb-alien:define-alien-type ,enum-name sb-alien:signed)) - #+(and mcl (not openmcl)) `((def-mcl-type ,enum-name :integer)) + #+digitool `((def-mcl-type ,enum-name :integer)) #+openmcl `((ccl::def-foreign-type ,enum-name :int)) (nreverse constants))) cmds)) @@ -64,7 +61,7 @@ #+sbcl `(sb-alien:define-alien-type ,name-array (* ,(convert-from-uffi-type type :array))) - #+(and mcl (not openmcl)) + #+digitool `(def-mcl-type ,name-array '(:array ,type)) #+openmcl `(ccl::def-foreign-type ,name-array (:array ,(convert-from-uffi-type type :array))) @@ -79,9 +76,9 @@ (if (eq type :pointer-self) #+(or cmu scl) `((* (alien:struct ,name))) #+sbcl `((* (sb-alien:struct ,name))) - #+mcl `((:* (:struct ,name))) + #+(or openmcl digitool) `((:* (:struct ,name))) #+lispworks `((:pointer ,name)) - #-(or cmu sbcl scl mcl lispworks) `((* ,name)) + #-(or cmu sbcl scl openmcl digitool lispworks) `((* ,name)) `(,(convert-from-uffi-type type :struct)))))) (if variant (push (list def) processed) @@ -98,7 +95,7 @@ `(ff:def-foreign-type ,name (:struct ,@(process-struct-fields name fields))) #+lispworks `(fli:define-c-struct ,name ,@(process-struct-fields name fields)) - #+(and mcl (not openmcl)) + #+digitool `(ccl:defrecord ,name ,@(process-struct-fields name fields)) #+openmcl `(ccl::def-foreign-type @@ -117,15 +114,15 @@ `(alien:slot ,obj ,slot) #+sbcl `(sb-alien:slot ,obj ,slot) - #+mcl + #+(or openmcl digitool) `(ccl:pref ,obj ,(read-from-string (format nil ":~a.~a" (keyword type) (keyword slot)))) )
-#+mcl +#+(or openmcl digitool) (defmacro set-slot-value (obj type slot value) ;use setf to set values `(setf (ccl:pref ,obj ,(read-from-string (format nil ":~a.~a" (keyword type) (keyword slot)))) ,value))
-#+mcl +#+(or openmcl digitool) (defsetf get-slot-value set-slot-value)
@@ -139,42 +136,54 @@ `(alien:slot ,obj ,slot) #+sbcl `(sb-alien:slot ,obj ,slot) - #+(and mcl (not openmcl)) + #+digitool `(ccl:%int-to-ptr (+ (ccl:%ptr-to-int ,obj) (the fixnum (ccl:field-info ,type ,slot)))) #+openmcl `(let ((field (ccl::%find-foreign-record-type-field ,type ,slot))) (ccl:%int-to-ptr (+ (ccl:%ptr-to-int ,obj) (the fixnum (ccl::foreign-record-field-offset field))))) )
-; so we could allow '(:array :long) or deref with other type like :long only -#+mcl -(defun array-type (type) - (let ((result type)) - (when (listp type) - (let ((type-list (if (eq (car type) 'quote) (nth 1 type) type))) - (when (and (listp type-list) (eq (car type-list) :array)) - (setf result (cadr type-list))))) - result)) - - -(defmacro deref-array (obj type i) - "Returns a field from a row" - #+(or lispworks cmu sbcl scl) (declare (ignore type)) - #+(or cmu scl) `(alien:deref ,obj ,i) - #+sbcl `(sb-alien:deref ,obj ,i) - #+lispworks `(fli:dereference ,obj :index ,i :copy-foreign-object nil) - #+allegro `(ff:fslot-value-typed (quote ,(convert-from-uffi-type type :type)) :c ,obj ,i) - #+mcl - (let* ((array-type (array-type type)) - (local-type (convert-from-uffi-type array-type :allocation)) - (accessor (first (macroexpand `(ccl:pref obj ,local-type))))) - `(,accessor - ,obj - (* (the fixnum ,i) ,(size-of-foreign-type local-type)))) - ) - +;; necessary to eval at compile time for openmcl to compile convert-from-foreign-usb8 +;; below +(eval-when (:compile-toplevel :load-toplevel :execute) + ;; so we could allow '(:array :long) or deref with other type like :long only + #+(or openmcl digitool) + (defun array-type (type) + (let ((result type)) + (when (listp type) + (let ((type-list (if (eq (car type) 'quote) (nth 1 type) type))) + (when (and (listp type-list) (eq (car type-list) :array)) + (setf result (cadr type-list))))) + result)) + + + (defmacro deref-array (obj type i) + "Returns a field from a row" + #+(or lispworks cmu sbcl scl) (declare (ignore type)) + #+(or cmu scl) `(alien:deref ,obj ,i) + #+sbcl `(sb-alien:deref ,obj ,i) + #+lispworks `(fli:dereference ,obj :index ,i :copy-foreign-object nil) + #+allegro `(ff:fslot-value-typed (quote ,(convert-from-uffi-type type :type)) :c ,obj ,i) + #+openmcl + (let* ((array-type (array-type type)) + (local-type (convert-from-uffi-type array-type :allocation)) + (element-size-in-bits (ccl::%foreign-type-or-record-size local-type :bits))) + (ccl::%foreign-access-form + obj + (ccl::%foreign-type-or-record local-type) + `(* ,i ,element-size-in-bits) + nil)) + #+digitool + (let* ((array-type (array-type type)) + (local-type (convert-from-uffi-type array-type :allocation)) + (accessor (first (macroexpand `(ccl:pref obj ,local-type))))) + `(,accessor + ,obj + (* (the fixnum ,i) ,(size-of-foreign-type local-type)))) + )) + ; this expands to the %set-xx functions which has different params than %put-xx -#+mcl +#+digitool (defmacro deref-array-set (obj type i value) (let* ((array-type (array-type type)) (local-type (convert-from-uffi-type array-type :allocation)) @@ -185,7 +194,7 @@ (* (the fixnum ,i) ,(size-of-foreign-type local-type)) ,value)))
-#+mcl +#+digitool (defsetf deref-array deref-array-set)
(defmacro def-union (name &rest fields) @@ -197,9 +206,57 @@ `(alien:def-alien-type ,name (alien:union ,name ,@(process-struct-fields name fields))) #+sbcl `(sb-alien:define-alien-type ,name (sb-alien:union ,name ,@(process-struct-fields name fields))) - #+(and mcl (not openmcl)) + #+digitool `(ccl:defrecord ,name (:variant ,@(process-struct-fields name fields t))) #+openmcl `(ccl::def-foreign-type nil (:union ,name ,@(process-struct-fields name fields))) ) + + +#-(or sbcl cmu) +(defun convert-from-foreign-usb8 (s len) + (declare (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0)) + (fixnum len)) + (let ((a (make-array len :element-type '(unsigned-byte 8)))) + (dotimes (i len a) + (declare (fixnum i)) + (setf (aref a i) (uffi:deref-array s '(:array :unsigned-byte) i))))) + +#+sbcl +(eval-when (:compile-toplevel :load-toplevel :execute) + (sb-ext:without-package-locks + (defvar *system-copy-fn* (if (fboundp (intern "COPY-FROM-SYSTEM-AREA" "SB-KERNEL")) + (intern "COPY-FROM-SYSTEM-AREA" "SB-KERNEL") + (intern "COPY-UB8-FROM-SYSTEM-AREA" "SB-KERNEL"))) + (defconstant +system-copy-offset+ (if (fboundp (intern "COPY-FROM-SYSTEM-AREA" "SB-KERNEL")) + (* sb-vm:vector-data-offset sb-vm:n-word-bits) + 0)) + (defconstant +system-copy-multiplier+ (if (fboundp (intern "COPY-FROM-SYSTEM-AREA" "SB-KERNEL")) + sb-vm:n-byte-bits + 1)))) + + +#+sbcl +(defun convert-from-foreign-usb8 (s len) + (let ((sap (sb-alien:alien-sap s))) + (declare (type sb-sys:system-area-pointer sap)) + (locally + (declare (optimize (speed 3) (safety 0))) + (let ((result (make-array len :element-type '(unsigned-byte 8)))) + (funcall *system-copy-fn* sap 0 result +system-copy-offset+ + (* len +system-copy-multiplier+)) + result)))) + +#+cmu +(defun convert-from-foreign-usb8 (s len) + (let ((sap (alien:alien-sap s))) + (declare (type system:system-area-pointer sap)) + (locally + (declare (optimize (speed 3) (safety 0))) + (let ((result (make-array len :element-type '(unsigned-byte 8)))) + (kernel:copy-from-system-area sap 0 + result (* vm:vector-data-offset + vm:word-bits) + (* len vm:byte-bits)) + result))))
Modified: branches/xml-class-rework/thirdparty/uffi/src/corman/getenv-ccl.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/src/corman/getenv-ccl.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/src/corman/getenv-ccl.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,8 @@ ;;;; Programmer: "Joe Marshall" prunesquallor@attbi.com ;;;; Date Started: Feb 2002 ;;;; -`;;;; $Id: getenv-ccl.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg -;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package :cl-user)
Modified: branches/xml-class-rework/thirdparty/uffi/src/functions.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/src/functions.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/src/functions.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,25 +7,22 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: functions.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package #:uffi)
(defun process-function-args (args) (if (null args) - #+(or lispworks cmu sbcl scl cormanlisp (and mcl (not openmcl))) nil + #+(or lispworks cmu sbcl scl cormanlisp digitool) nil #+allegro '(:void) #+openmcl (values nil nil)
;; args not null - #+(or lispworks allegro cmu sbcl scl (and mcl (not openmcl)) cormanlisp) + #+(or lispworks allegro cmu sbcl scl digitool cormanlisp) (let (processed) (dolist (arg args) (push (process-one-function-arg arg) processed)) @@ -48,8 +45,9 @@ (let ((name (car arg)) (type (convert-from-uffi-type (cadr arg) :routine))) #+(or cmu sbcl scl) - (list name type :in) - #+(or allegro lispworks (and mcl (not openmcl))) + ;(list name type :in) + `(,name ,type ,@(if (= (length arg) 3) (list (third arg)) (values))) + #+(or allegro lispworks digitool) (if (and (listp type) (listp (car type))) (append (list name) type) (list name type)) @@ -63,10 +61,116 @@ (list type) type))
+(defun funcallable-lambda-list (args) + (let ((ll nil)) + (dolist (arg args) + (push (car arg) ll)) + (nreverse ll))) + +#| +(defmacro def-funcallable (name args &key returning) + (let ((result-type (convert-from-uffi-type returning :return)) + (function-args (process-function-args args))) + #+lispworks + `(fli:define-foreign-funcallable ,name ,function-args + :result-type ,result-type + :language :ansi-c + :calling-convention :cdecl) + #+(or cmu scl sbcl) + ;; requires the type of the function pointer be declared correctly! + (let* ((ptrsym (gensym)) + (ll (funcallable-lambda-list args))) + `(defun ,name ,(cons ptrsym ll) + (alien::alien-funcall ,ptrsym ,@ll))) + #+openmcl + (multiple-value-bind (params args) (process-function-args args) + (let ((ptrsym (gensym))) + `(defun ,name ,(cons ptrsym params) + (ccl::ff-call ,ptrsym ,@args ,result-type)))) + #+allegro + ;; this is most definitely wrong + (let* ((ptrsym (gensym)) + (ll (funcallable-lambda-list args))) + `(defun ,name ,(cons ptrsym ll) + (system::ff-funcall ,ptrsym ,@ll))) + )) +|# + +(defun convert-lispworks-args (args) + (loop for arg in args + with processed = nil + do + (if (and (= (length arg) 3) (eq (third arg) :out)) + (push (list (first arg) + (list :reference-return (second arg))) processed) + (push (subseq arg 0 2) processed)) + finally (return processed))) + +(defun preprocess-names (names) + (let ((fname (gensym))) + (if (atom names) + (values (list names fname) fname (uffi::make-lisp-name names)) + (values (list (first names) fname) fname (second names))))) + +(defun preprocess-args (args) + (loop for arg in args + with lisp-args = nil and out = nil and processed = nil + do + (if (= (length arg) 3) + (ecase (third arg) + (:in + (progn + (push (first arg) lisp-args) + (push (list (first arg) (second arg)) processed))) + (:out + (progn + (push (list (first arg) (second arg)) out) + (push (list (first arg) (list '* (second arg))) processed)))) + (progn + (push (first arg) lisp-args) + (push arg processed))) + finally (return (values (nreverse lisp-args) + (nreverse out) + (nreverse processed))))) + + +(defmacro def-function (names args &key module returning) + (multiple-value-bind (lisp-args out processed) + (preprocess-args args) + (declare (ignorable lisp-args processed)) + (if (= (length out) 0) + `(%def-function ,names ,args + ,@(if module (list :module module) (values)) + ,@(if returning (list :returning returning) (values))) + + #+(or cmu scl sbcl) + `(%def-function ,names ,args + ,@(if returning (list :returning returning) (values))) + #+lispworks + `(%def-function ,names ,(convert-lispworks-args args) + ,@(if module (list :module module) (values)) + ,@(if returning (list :returning returning) (values))) + #-(or cmu scl sbcl lispworks) + (multiple-value-bind (name-pair fname lisp-name) + (preprocess-names names) + `(prog1 + (%def-function ,name-pair ,processed + :module ,module :returning ,returning) + ;(declaim (inline ,fname)) + (defun ,lisp-name ,lisp-args + (with-foreign-objects ,out + (values (,fname ,@(mapcar #'first args)) + ,@(mapcar #'(lambda (arg) + (list 'deref-pointer + (first arg) + (second arg))) out)))))) + ))) + + ;; name is either a string representing foreign name, or a list ;; of foreign-name as a string and lisp name as a symbol -(defmacro def-function (names args &key module returning) - #+(or cmu sbcl scl allegro mcl cormanlisp) (declare (ignore module)) +(defmacro %def-function (names args &key module returning) + #+(or cmu sbcl scl allegro openmcl digitool cormanlisp) (declare (ignore module))
(let* ((result-type (convert-from-uffi-type returning :return)) (function-args (process-function-args args)) @@ -94,8 +198,8 @@ ,@(if module (list :module module) (values)) :result-type ,result-type :language :ansi-c - :calling-convention :cdecl) - #+(and mcl (not openmcl)) + #+:win32 :calling-convention #+:win32 :cdecl) + #+digitool `(eval-when (:compile-toplevel :load-toplevel :execute) (ccl:define-entry-point (,lisp-name ,foreign-name) ,function-args @@ -117,10 +221,5 @@ ))
-(defun make-lisp-name (name) - (let ((converted (substitute #- #_ name))) - (intern - #+case-sensitive converted - #-case-sensitive (string-upcase converted))))
Modified: branches/xml-class-rework/thirdparty/uffi/src/libraries.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/src/libraries.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/src/libraries.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,10 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: libraries.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package #:uffi) @@ -23,9 +20,9 @@
(defun default-foreign-library-type () "Returns string naming default library type for platform" - #+(or win32 mswindows) "dll" + #+(or win32 cygwin mswindows) "dll" #+(or macosx darwin ccl-5.0) "dylib" - #-(or win32 mswindows macosx darwin ccl-5.0) "so" + #-(or win32 cygwin mswindows macosx darwin ccl-5.0) "so" )
(defun foreign-library-types () @@ -35,7 +32,7 @@ #-(or win32 mswindows macosx darwin ccl-5.0) '("so" "a" "o") )
-(defun find-foreign-library (names directories &key types drive-letters) +(defun find-foreign-library (names directories &key types drive-letters) "Looks for a foreign library. directories can be a single string or a list of strings of candidate directories. Use default library type if type is not specified." @@ -56,21 +53,21 @@ (dolist (name names) (dolist (dir directories) (dolist (type types) - (let ((path (make-pathname + (let ((path (make-pathname #+lispworks :host #+lispworks (when drive-letter drive-letter) #-lispworks :device #-lispworks (when drive-letter drive-letter) - :name name + :name name :type type - :directory + :directory (etypecase dir (pathname (pathname-directory dir)) (list dir) (string - (pathname-directory + (pathname-directory (parse-namestring dir))))))) (when (probe-file path) (return-from find-foreign-library path))))))) @@ -79,13 +76,19 @@
(defun load-foreign-library (filename &key module supporting-libraries force-load) - #+(or allegro mcl) (declare (ignore module supporting-libraries)) - #+(or cmu scl sbcl) (declare (ignore module)) - - (when (and filename (probe-file filename)) - (if (pathnamep filename) ;; ensure filename is a string to check if - (setq filename (namestring filename))) ; already loaded + #+(or allegro openmcl digitool sbcl) (declare (ignore module supporting-libraries)) + #+(or cmu scl) (declare (ignore module)) + #+lispworks (declare (ignore supporting-libraries))
+ (when (and filename (or (null (pathname-directory filename)) + (probe-file filename))) + (if (pathnamep filename) ;; ensure filename is a string to check if already loaded + (setq filename (namestring (if (null (pathname-directory filename)) + filename + ;; lispworks treats as UNC, so use truename + #+(and lispworks win32) (truename filename) + #-(and lispworks win32) filename)))) + (if (and (not force-load) (find filename *loaded-libraries* :test #'string-equal)) t ;; return T, but don't reload library @@ -94,31 +97,29 @@ (let ((type (pathname-type (parse-namestring filename)))) (if (string-equal type "so") (sys::load-object-file filename) - (alien:load-foreign filename + (alien:load-foreign filename :libraries (convert-supporting-libraries-to-string supporting-libraries)))) #+scl (let ((type (pathname-type (parse-namestring filename)))) - (alien:load-foreign filename + (alien:load-foreign filename :libraries (convert-supporting-libraries-to-string supporting-libraries))) #+sbcl - (let ((type (pathname-type (parse-namestring filename)))) - (if (or (string-equal type "so") - (string-equal type "bundle") - (string-equal type "dylib")) - (sb-alien::load-1-foreign filename) - (sb-alien:load-foreign filename - :libraries - (convert-supporting-libraries-to-string - supporting-libraries)))) - #+lispworks (fli:register-module module :real-name filename) + (handler-case (sb-alien::load-1-foreign filename) + (sb-int:unsupported-operator (c) + (if (fboundp (intern "LOAD-SHARED-OBJECT" :sb-alien)) + (funcall (intern "LOAD-SHARED-OBJECT" :sb-alien) filename) + (error c)))) + + #+lispworks (fli:register-module module :real-name filename + :connection-style :immediate) #+allegro (load filename) #+openmcl (ccl:open-shared-library filename) - #+(and mcl (not openmcl)) (ccl:add-to-shared-library-search-path filename t) - + #+digitool (ccl:add-to-shared-library-search-path filename t) + (push filename *loaded-libraries*) t))))
Modified: branches/xml-class-rework/thirdparty/uffi/src/objects.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/src/objects.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/src/objects.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,32 +7,29 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: objects.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package #:uffi)
-(defun size-of-foreign-type (type) - #+lispworks (fli:size-of type) - #+allegro (ff:sizeof-fobject type) - #+(or cmu scl) (ash (eval `(alien:alien-size ,type)) -3) ;; convert from bits to bytes - #+sbcl (ash (eval `(sb-alien:alien-size ,type)) -3) ;; convert from bits to bytes - #+clisp (values (ffi:size-of type)) - #+(and mcl (not openmcl)) - (let ((mcl-type (ccl:find-mactype type nil t))) - (if mcl-type - (ccl::mactype-record-size mcl-type) - (ccl::record-descriptor-length (ccl:find-record-descriptor type t t)))) ;error if not a record - #+openmcl (ccl::%foreign-type-or-record-size type :bytes) - ) +(eval-when (:compile-toplevel :load-toplevel :execute) + (defun size-of-foreign-type (type) + #+lispworks (fli:size-of type) + #+allegro (ff:sizeof-fobject type) + #+(or cmu scl) (ash (eval `(alien:alien-size ,type)) -3) ;; convert from bits to bytes + #+sbcl (ash (eval `(sb-alien:alien-size ,type)) -3) ;; convert from bits to bytes + #+clisp (values (ffi:size-of type)) + #+digitool + (let ((mcl-type (ccl:find-mactype type nil t))) + (if mcl-type + (ccl::mactype-record-size mcl-type) + (ccl::record-descriptor-length (ccl:find-record-descriptor type t t)))) ;error if not a record + #+openmcl (ccl::%foreign-type-or-record-size type :bytes) + ))
- (defmacro allocate-foreign-object (type &optional (size :unspecified)) "Allocates an instance of TYPE. If size is specified, then allocate an array of TYPE with size SIZE. The TYPE parameter is evaluated." @@ -46,7 +43,7 @@ `(fli:allocate-foreign-object :type ',(convert-from-uffi-type type :allocate)) #+allegro `(ff:allocate-fobject ',(convert-from-uffi-type type :allocate) :c) - #+mcl + #+(or openmcl digitool) `(new-ptr ,(size-of-foreign-type (convert-from-uffi-type type :allocation))) ) (progn @@ -58,7 +55,7 @@ `(fli:allocate-foreign-object :type ',(convert-from-uffi-type type :allocate) :nelems ,size) #+allegro `(ff:allocate-fobject (list :array (quote ,(convert-from-uffi-type type :allocate)) ,size) :c) - #+mcl + #+(or openmcl digitool) `(new-ptr (* ,size ,(size-of-foreign-type (convert-from-uffi-type type :allocation)))) )))
@@ -71,7 +68,7 @@ `(fli:free-foreign-object ,obj) #+allegro `(ff:free-fobject ,obj) - #+mcl + #+(or openmcl digitool) `(dispose-ptr ,obj) )
@@ -80,25 +77,35 @@ #+allegro `(zerop ,obj) #+(or cmu scl) `(alien:null-alien ,obj) #+sbcl `(sb-alien:null-alien ,obj) - #+mcl `(ccl:%null-ptr-p ,obj) + #+(or openmcl digitool) `(ccl:%null-ptr-p ,obj) )
(defmacro make-null-pointer (type) - #+(or allegro mcl) (declare (ignore type)) + #+(or allegro openmcl digitool) (declare (ignore type)) #+(or cmu scl) `(alien:sap-alien (system:int-sap 0) (* ,(convert-from-uffi-type (eval type) :type))) #+sbcl `(sb-alien:sap-alien (sb-sys:int-sap 0) (* ,(convert-from-uffi-type (eval type) :type))) #+lispworks `(fli:make-pointer :address 0 :type (quote ,(convert-from-uffi-type (eval type) :type))) #+allegro 0 - #+mcl `(ccl:%null-ptr) + #+(or openmcl digitool) `(ccl:%null-ptr) )
+(defmacro make-pointer (addr type) + #+(or allegro openmcl digitool) (declare (ignore type)) + #+(or cmu scl) `(alien:sap-alien (system:int-sap ,addr) (* ,(convert-from-uffi-type (eval type) :type))) + #+sbcl `(sb-alien:sap-alien (sb-sys:int-sap ,addr) (* ,(convert-from-uffi-type (eval type) :type))) + #+lispworks `(fli:make-pointer :address ,addr :type (quote ,(convert-from-uffi-type (eval type) :type))) + #+allegro addr + #+(or openmcl digitool) `(ccl:%int-to-ptr ,addr) + ) + + (defmacro char-array-to-pointer (obj) #+(or cmu scl) `(alien:cast ,obj (* (alien:unsigned 8))) #+sbcl `(sb-alien:cast ,obj (* (sb-alien:unsigned 8))) #+lispworks `(fli:make-pointer :type '(:unsigned :char) :address (fli:pointer-address ,obj)) #+allegro obj - #+mcl obj + #+(or openmcl digitool) obj )
(defmacro deref-pointer (ptr type) @@ -108,35 +115,33 @@ #+sbcl `(sb-alien:deref ,ptr) #+lispworks `(fli:dereference ,ptr) #+allegro `(ff:fslot-value-typed (quote ,(convert-from-uffi-type type :deref)) :c ,ptr) - #+mcl `(ccl:pref ,ptr ,(convert-from-uffi-type type :deref)) + #+(or openmcl digitool) `(ccl:pref ,ptr ,(convert-from-uffi-type type :deref)) )
-#+mcl +#+digitool (defmacro deref-pointer-set (ptr type value) `(setf (ccl:pref ,ptr ,(convert-from-uffi-type type :deref)) ,value))
-#+mcl +#+digitool (defsetf deref-pointer deref-pointer-set)
-#+lispworks (defmacro ensure-char-character (obj) - `(if (characterp ,obj) ,obj (code-char ,obj))) + #+(or digitool) obj + #+(or allegro cmu sbcl scl openmcl) `(code-char ,obj) + ;; lispworks varies whether deref'ing array vs. slot access of a char + #+lispworks `(if (characterp ,obj) ,obj (code-char ,obj)))
-#+(and mcl (not openmcl)) -(defmacro ensure-char-character (obj) - obj) - -#+(or allegro cmu sbcl scl openmcl) -(defmacro ensure-char-character (obj) - `(code-char ,obj)) - -#+(or lispworks (and mcl (not openmcl))) (defmacro ensure-char-integer (obj) - `(char-code ,obj)) + #+(or digitool) `(char-code ,obj) + #+(or allegro cmu sbcl scl openmcl) obj + ;; lispworks varies whether deref'ing array vs. slot access of a char + #+lispworks + `(if (integerp ,obj) ,obj (char-code ,obj)))
-#+(or allegro cmu sbcl scl openmcl) -(defmacro ensure-char-integer (obj) - obj) +(defmacro ensure-char-storable (obj) + #+(or digitool (and lispworks (not lispworks5))) obj + #+(or allegro cmu lispworks5 openmcl sbcl scl) + `(char-code ,obj))
(defmacro pointer-address (obj) #+(or cmu scl) @@ -147,12 +152,12 @@ `(fli:pointer-address ,obj) #+allegro obj - #+mcl - `(ccl:%ptr-to-int ,obj) + #+(or openmcl digitool) + `(ccl:%ptr-to-int ,obj) )
;; TYPE is evaluated. -#-mcl +#-(or openmcl digitool) (defmacro with-foreign-object ((var type) &rest body) #-(or cmu sbcl lispworks scl) ; default version `(let ((,var (allocate-foreign-object ,type))) @@ -160,22 +165,32 @@ (progn ,@body) (free-foreign-object ,var))) #+(or cmu scl) - (let ((obj (gensym))) - `(alien:with-alien ((,obj ,(convert-from-uffi-type (eval type) :allocate))) - (let ((,var (alien:addr ,obj))) - ,@body))) + (let ((obj (gensym)) + (ctype (convert-from-uffi-type (eval type) :allocate))) + (if (and (consp ctype) (eq 'array (car ctype))) + `(alien:with-alien ((,obj ,ctype)) + (let* ((,var ,obj)) + ,@body)) + `(alien:with-alien ((,obj ,ctype)) + (let* ((,var (alien:addr ,obj))) + ,@body)))) #+sbcl - (let ((obj (gensym))) - `(sb-alien:with-alien ((,obj ,(convert-from-uffi-type (eval type) :allocate))) - (let ((,var (sb-alien:addr ,obj))) - ,@body))) + (let ((obj (gensym)) + (ctype (convert-from-uffi-type (eval type) :allocate))) + (if (and (consp ctype) (eq 'array (car ctype))) + `(sb-alien:with-alien ((,obj ,ctype)) + (let* ((,var ,obj)) + ,@body)) + `(sb-alien:with-alien ((,obj ,ctype)) + (let* ((,var (sb-alien:addr ,obj))) + ,@body)))) #+lispworks `(fli:with-dynamic-foreign-objects ((,var ,(convert-from-uffi-type (eval type) :allocate))) ,@body) )
-#-mcl +#-(or openmcl digitool) (defmacro with-foreign-objects (bindings &rest body) (if bindings `(with-foreign-object ,(car bindings) @@ -183,7 +198,7 @@ ,@body)) `(progn ,@body)))
-#+mcl +#+(or openmcl digitool) (defmacro with-foreign-objects (bindings &rest body) (let ((params nil) type count) (dolist (spec (reverse bindings)) ;keep order - macroexpands to let* @@ -195,10 +210,10 @@ (setf type (nth 1 type))) (push (list (first spec) (* count (size-of-foreign-type type))) params)) `(ccl:%stack-block ,params ,@body))) - -#+mcl + +#+(or openmcl digitool) (defmacro with-foreign-object ((var type) &rest body) - `(with-foreign-objects ((,var ,type)) + `(with-foreign-objects ((,var ,type)) ,@body))
#+lispworks @@ -216,18 +231,24 @@ ,pointer (* ,(convert-from-uffi-type (eval type) :type))))) ,@body))
-#+allegro +#+(or allegro openmcl) (defmacro with-cast-pointer ((binding-name pointer type) &body body) (declare (ignore type)) `(let ((,binding-name ,pointer)) ,@body))
-#-(or lispworks cmu scl sbcl allegro) +#-(or lispworks cmu scl sbcl allegro openmcl) (defmacro with-cast-pointer ((binding-name pointer type) &body body) - (declare (ignore binding-name pointer type)) + (declare (ignore binding-name pointer type body)) '(error "WITH-CAST-POINTER not (yet) implemented for ~A" (lisp-implementation-type)))
+#+(or allegro openmcl) +(defun convert-external-name (name) + "Add an underscore to NAME if necessary for the ABI." + #+(or macosx darwinppc-target) (concatenate 'string "_" name) + #-(or macosx darwinppc-target) name) + (defmacro def-foreign-var (names type module) #-lispworks (declare (ignore module)) (let ((foreign-name (if (atom names) names (first names))) @@ -241,7 +262,7 @@ #+allegro `(define-symbol-macro ,lisp-name (ff:fslot-value-typed (quote ,(convert-from-uffi-type type :deref)) - :c (ff:get-entry-point ,foreign-name))) + :c (ff:get-entry-point ,(convert-external-name foreign-name)))) #+lispworks `(progn (fli:define-foreign-variable (,lisp-name ,foreign-name) @@ -250,7 +271,21 @@ :module ,module) (define-symbol-macro ,lisp-name (fli:dereference (,lisp-name) :copy-foreign-object nil))) - #-(or allegro cmu scl sbcl lispworks) + #+openmcl `(define-symbol-macro ,lisp-name + (deref-pointer (ccl:foreign-symbol-address + ,(convert-external-name foreign-name)) ,var-type)) + #-(or allegro cmu scl sbcl lispworks openmcl) + `(define-symbol-macro ,lisp-name '(error "DEF-FOREIGN-VAR not (yet) defined for ~A" (lisp-implementation-type))))) + + +;;; Define a special variable, like DEFVAR, that will be initialized +;;; to a pointer which may need to be reset when a saved image is +;;; loaded. This is needed for OpenMCL, which sets pointers to "dead +;;; macptrs" when a saved image is loaded. +;; This may possibly be needed for sbcl's SAVE-LISP-AND-DIE +(defmacro def-pointer-var (name value &optional doc) + #-openmcl `(defvar ,name ,value ,@(if doc (list doc))) + #+openmcl `(ccl::defloadvar ,name ,value ,doc))
Modified: branches/xml-class-rework/thirdparty/uffi/src/os.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/src/os.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/src/os.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -5,21 +5,32 @@ ;;;; Name: os.lisp ;;;; Purpose: Operating system interface for UFFI ;;;; Programmer: Kevin M. Rosenberg -;;;; Date Started: Sep 2002 +;;;; Date Started: Sep 2002 ;;;; -;;;; $Id: os.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg. -;;;; Much of this code was taken from other open source project and copyright -;;;; for that code is noted below where appropriate. +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg. ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package #:uffi)
+ +(defun getenv (var) + "Return the value of the environment variable." + #+allegro (sys::getenv (string var)) + #+clisp (sys::getenv (string var)) + #+cmu (cdr (assoc (string var) ext:*environment-list* :test #'equalp + :key #'string)) + #+gcl (si:getenv (string var)) + #+lispworks (lw:environment-variable (string var)) + #+lucid (lcl:environment-variable (string var)) + #+(or openmcl digitool) (ccl::getenv var) + #+sbcl (sb-ext:posix-getenv var) + #-(or allegro clisp cmu gcl lispworks lucid openmcl digitool sbcl) + (error 'not-implemented :proc (list 'getenv var))) + + ;; modified from function ASDF -- Copyright Dan Barlow and Contributors
(defun run-shell-command (control-string &rest args &key output) @@ -32,27 +43,27 @@ (let ((command (apply #'format nil control-string args))) #+sbcl (sb-impl::process-exit-code - (sb-ext:run-program + (sb-ext:run-program "/bin/sh" (list "-c" command) :input nil :output output)) - + #+(or cmu scl) (ext:process-exit-code - (ext:run-program + (ext:run-program "/bin/sh" (list "-c" command) :input nil :output output))
#+allegro (excl:run-shell-command command :input nil :output output) - + #+lispworks (system:call-system-showing-output command :shell-type "/bin/sh" :output-stream output) - + #+clisp ;XXX not exactly *trace-output*, I know (ext:run-shell-command command :output :terminal :wait t)
@@ -64,5 +75,5 @@ :wait t)))
#-(or openmcl clisp lispworks allegro scl cmu sbcl) - (error "RUN-SHELL-PROGRAM not implemented for this Lisp") + (error "RUN-SHELL-PROGRAM not implemented for this Lisp.") ))
Modified: branches/xml-class-rework/thirdparty/uffi/src/package.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/src/package.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/src/package.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,25 +7,22 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package #:cl-user)
(defpackage #:uffi (:use #:cl) - (:export - + (:export + ;; immediate types #:def-constant #:def-foreign-type #:def-type #:null-char-p - + ;; aggregate types #:def-enum #:def-struct @@ -34,7 +31,7 @@ #:def-array-pointer #:deref-array #:def-union - + ;; objects #:allocate-foreign-object #:free-foreign-object @@ -45,13 +42,18 @@ #:deref-pointer #:ensure-char-character #:ensure-char-integer + #:ensure-char-storable #:null-pointer-p #:make-null-pointer + #:make-pointer + #:pointer-address #:+null-cstring-pointer+ #:char-array-to-pointer #:with-cast-pointer #:def-foreign-var - + #:convert-from-foreign-usb8 + #:def-pointer-var + ;; string functions #:convert-from-cstring #:convert-to-cstring @@ -62,7 +64,9 @@ #:convert-to-foreign-string #:allocate-foreign-string #:with-foreign-string - + #:with-foreign-strings + #:foreign-string-length + ;; function call #:def-function
@@ -70,9 +74,11 @@ #:find-foreign-library #:load-foreign-library #:default-foreign-library-type + #:foreign-library-types
;; OS #:run-shell-command + #:getenv ))
Modified: branches/xml-class-rework/thirdparty/uffi/src/primitives.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/src/primitives.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/src/primitives.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,21 +7,18 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: primitives.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package #:uffi)
-#+mcl +#+(or openmcl digitool) (defvar *keyword-package* (find-package "KEYWORD"))
-#+mcl +#+(or openmcl digitool) ; MCL and OpenMCL expect a lot of FFI elements to be keywords (e.g. struct field names in OpenMCL) ; So this provides a function to convert any quoted symbols to keywords. (defun keyword (obj) @@ -39,7 +36,7 @@ obj)))
; Wrapper for unexported function we have to use -#+(and mcl (not openmcl)) +#+digitool (defmacro def-mcl-type (name type) `(ccl::def-mactype ,(keyword name) (ccl:find-mactype ,type)))
@@ -53,8 +50,8 @@ (defmacro def-type (name type) "Generates a (deftype) statement for CL. Currently, only CMUCL supports takes advantage of this optimization." - #+(or lispworks allegro mcl cormanlisp) (declare (ignore type)) - #+(or lispworks allegro mcl cormanlisp) `(deftype ,name () t) + #+(or lispworks allegro openmcl digitool cormanlisp) (declare (ignore type)) + #+(or lispworks allegro openmcl digitool cormanlisp) `(deftype ,name () t) #+(or cmu scl) `(deftype ,name () '(alien:alien ,(convert-from-uffi-type type :declare))) #+sbcl @@ -71,11 +68,11 @@ #+(or cmu scl) `(alien:def-alien-type ,name ,(convert-from-uffi-type type :type)) #+sbcl `(sb-alien:define-alien-type ,name ,(convert-from-uffi-type type :type)) #+cormanlisp `(ct:defctype ,name ,(convert-from-uffi-type type :type)) - #+mcl + #+(or openmcl digitool) (let ((mcl-type (convert-from-uffi-type type :type))) (unless (or (keywordp mcl-type) (consp mcl-type)) (setf mcl-type `(quote ,mcl-type))) - #+(and mcl (not openmcl)) + #+digitool `(def-mcl-type ,(keyword name) ,mcl-type) #+openmcl `(ccl::def-foreign-type ,(keyword name) ,mcl-type)) @@ -87,9 +84,6 @@ (make-hash-table :size 20 :test #'eq)) )
-#+(or cmu sbcl scl) -(defvar *cmu-sbcl-def-type-list* nil) - #+(or cmu scl) (defvar *cmu-sbcl-def-type-list* '((:char . (alien:signed 8)) @@ -100,12 +94,16 @@ (:unsigned-short . (alien:unsigned 16)) (:int . (alien:signed 32)) (:unsigned-int . (alien:unsigned 32)) - (:long . (alien:signed 32)) - (:unsigned-long . (alien:unsigned 32)) + #-x86-64 (:long . (alien:signed 32)) + #-x86-64 (:unsigned-long . (alien:unsigned 32)) + #+x86-64 (:long . (alien:signed 64)) + #+x86-64 (:unsigned-long . (alien:unsigned 64)) (:float . alien:single-float) (:double . alien:double-float) + (:void . t) ) "Conversions in CMUCL for def-foreign-type are different than in def-function") + #+sbcl (defvar *cmu-sbcl-def-type-list* '((:char . (sb-alien:signed 8)) @@ -116,10 +114,13 @@ (:unsigned-short . (sb-alien:unsigned 16)) (:int . (sb-alien:signed 32)) (:unsigned-int . (sb-alien:unsigned 32)) - (:long . (sb-alien:signed 32)) - (:unsigned-long . (sb-alien:unsigned 32)) + #-x86-64 (:long . (sb-alien:signed 32)) + #-x86-64 (:unsigned-long . (sb-alien:unsigned 32)) + #+x86-64 (:long . (sb-alien:signed 64)) + #+x86-64 (:unsigned-long . (sb-alien:unsigned 64)) (:float . sb-alien:single-float) (:double . sb-alien:double-float) + (:void . t) ) "Conversions in SBCL for def-foreign-type are different than in def-function")
@@ -145,14 +146,15 @@ (setq *type-conversion-list* '((* . *) (:void . sb-alien:void) (:pointer-void . (* t)) - (:cstring . sb-alien:c-string) + #-sb-unicode(:cstring . sb-alien:c-string) + #+sb-unicode(:cstring . sb-alien:utf8-string) (:char . sb-alien:char) (:unsigned-char . (sb-alien:unsigned 8)) (:byte . (sb-alien:signed 8)) (:unsigned-byte . (sb-alien:unsigned 8)) (:short . sb-alien:short) (:unsigned-short . sb-alien:unsigned-short) - (:int . sb-alien:integer) (:unsigned-int . sb-alien:unsigned-int) + (:int . sb-alien:int) (:unsigned-int . sb-alien:unsigned-int) (:long . sb-alien:long) (:unsigned-long . sb-alien:unsigned-long) (:float . sb-alien:float) (:double . sb-alien:double) (:array . sb-alien:array))) @@ -192,7 +194,7 @@ (:float . :float) (:double . :double) (:array . :c-array)))
-#+(and mcl (not openmcl)) +#+digitool (setq *type-conversion-list* '((* . :pointer) (:void . :void) (:short . :short) (:unsigned-short . :unsigned-short) @@ -232,8 +234,8 @@ (let ((found-type (gethash type +type-conversion-hash+))) (if found-type found-type - #-mcl type - #+mcl (keyword type)))) + #-(or openmcl digitool) type + #+(or openmcl digitool) (keyword type))))
(defun %convert-from-uffi-type (type context) "Converts from a uffi type to an implementation specific type" @@ -253,7 +255,7 @@ ((and (eq context :return) (eq type :cstring)) (basic-convert-from-uffi-type :cstring-returning)) - #+(and mcl (not openmcl)) + #+digitool ((and (eq type :void) (eq context :return)) nil) (t (basic-convert-from-uffi-type type))) @@ -262,16 +264,20 @@ (cl:quote (convert-from-uffi-type (cadr type) context)) (:struct-pointer - #+mcl `(:* (:struct ,(%convert-from-uffi-type (cadr type) :struct))) - #-mcl (%convert-from-uffi-type (list '* (cadr type)) :struct) + #+(or openmcl digitool) `(:* (:struct ,(%convert-from-uffi-type (cadr type) :struct))) + #-(or openmcl digitool) (%convert-from-uffi-type (list '* (cadr type)) :struct) ) (:struct - #+mcl `(:struct ,(%convert-from-uffi-type (cadr type) :struct)) - #-mcl (%convert-from-uffi-type (cadr type) :struct) + #+(or openmcl digitool) `(:struct ,(%convert-from-uffi-type (cadr type) :struct)) + #-(or openmcl digitool) (%convert-from-uffi-type (cadr type) :struct) ) - (t - (cons (%convert-from-uffi-type (first type) context) - (%convert-from-uffi-type (rest type) context))))))) + (:union + #+(or openmcl digitool) `(:union ,(%convert-from-uffi-type (cadr type) :union)) + #-(or openmcl digitool) (%convert-from-uffi-type (cadr type) :union) + ) + (t + (cons (%convert-from-uffi-type (first type) context) + (%convert-from-uffi-type (rest type) context)))))))
(defun convert-from-uffi-type (type context) (let ((result (%convert-from-uffi-type type context))) @@ -282,7 +288,24 @@ (if (eq context :struct) (append '(:*) (cdr result)) :address)) - #+(and mcl (not openmcl)) + #+digitool ((and (eq (car result) :pointer) (eq context :allocation) :pointer)) (t result))))
+(eval-when (:compile-toplevel :load-toplevel :execute) + (when (char= #\a (schar (symbol-name '#:a) 0)) + (pushnew :uffi-lowercase-reader *features*)) + (when (not (string= (symbol-name '#:a) + (symbol-name '#:A))) + (pushnew :uffi-case-sensitive *features*))) + +(defun make-lisp-name (name) + (let ((converted (substitute #- #_ name))) + (intern + #+uffi-case-sensitive converted + #+(and (not uffi-lowercase-reader) (not uffi-case-sensitive)) (string-upcase converted) + #+(and uffi-lowercase-reader (not uffi-case-sensitive)) (string-downcase converted)))) + +(eval-when (:compile-toplevel :load-toplevel :execute) + (setq cl:*features* (delete :uffi-lowercase-reader *features*)) + (setq cl:*features* (delete :uffi-case-sensitive *features*)))
Modified: branches/xml-class-rework/thirdparty/uffi/src/readmacros-mcl.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/src/readmacros-mcl.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/src/readmacros-mcl.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,24 +7,21 @@ ;;;; Programmer: Kevin M. Rosenberg/John Desoi ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: readmacros-mcl.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(in-package #:uffi)
;; trap macros don't work right directly in the macros -#+(and mcl (not openmcl)) +#+digitool (defun new-ptr (size) (#_NewPtr size))
-#+(and mcl (not openmcl)) +#+digitool (defun dispose-ptr (ptr) (#_DisposePtr ptr))
Modified: branches/xml-class-rework/thirdparty/uffi/src/strings.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/src/strings.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/src/strings.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,36 +7,32 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: strings.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg -;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; *************************************************************************
(in-package #:uffi)
-(defvar +null-cstring-pointer+ +(def-pointer-var +null-cstring-pointer+ #+(or cmu sbcl scl) nil #+allegro 0 #+lispworks (fli:make-pointer :address 0 :type '(:unsigned :char)) - #+mcl (ccl:%null-ptr) + #+(or openmcl digitool) (ccl:%null-ptr) )
(defmacro convert-from-cstring (obj) "Converts a string from a c-call. Same as convert-from-foreign-string, except that LW/CMU automatically converts strings from c-calls." #+(or cmu sbcl lispworks scl) obj - #+allegro + #+allegro (let ((stored (gensym))) `(let ((,stored ,obj)) (if (zerop ,stored) nil - (values (excl:native-to-string ,stored))))) - #+mcl + (values (excl:native-to-string ,stored))))) + #+(or openmcl digitool) (let ((stored (gensym))) `(let ((,stored ,obj)) (if (ccl:%null-ptr-p ,stored) @@ -47,41 +43,53 @@ (defmacro convert-to-cstring (obj) #+(or cmu sbcl scl lispworks) obj #+allegro - `(if (null ,obj) - 0 - (values (excl:string-to-native ,obj))) - #+mcl - `(if (null ,obj) - +null-cstring-pointer+ - (let ((ptr (new-ptr (1+ (length ,obj))))) - (ccl::%put-cstring ptr ,obj) - ptr)) + (let ((stored (gensym))) + `(let ((,stored ,obj)) + (if (null ,stored) + 0 + (values (excl:string-to-native ,stored))))) + #+(or openmcl digitool) + (let ((stored (gensym))) + `(let ((,stored ,obj)) + (if (null ,stored) + +null-cstring-pointer+ + (let ((ptr (new-ptr (1+ (length ,stored))))) + (ccl::%put-cstring ptr ,stored) + ptr)))) )
(defmacro free-cstring (obj) #+(or cmu sbcl scl lispworks) (declare (ignore obj)) #+allegro - `(unless (zerop ,obj) - (ff:free-fobject ,obj)) - #+mcl - `(unless (ccl:%null-ptr-p ,obj) - (dispose-ptr ,obj)) + (let ((stored (gensym))) + `(let ((,stored ,obj)) + (unless (zerop ,stored) + (ff:free-fobject ,stored)))) + #+(or openmcl digitool) + (let ((stored (gensym))) + `(let ((,stored ,obj)) + (unless (ccl:%null-ptr-p ,stored) + (dispose-ptr ,stored)))) )
(defmacro with-cstring ((cstring lisp-string) &body body) #+(or cmu sbcl scl lispworks) - `(let ((,cstring ,lisp-string)) ,@body) + `(let ((,cstring ,lisp-string)) ,@body) #+allegro - (let ((acl-native (gensym))) - `(excl:with-native-string (,acl-native ,lisp-string) - (let ((,cstring (if ,lisp-string ,acl-native 0))) - ,@body))) - #+mcl - `(if (stringp ,lisp-string) - (ccl:with-cstrs ((,cstring ,lisp-string)) - ,@body) - (let ((,cstring +null-cstring-pointer+)) - ,@body)) + (let ((acl-native (gensym)) + (stored-lisp-string (gensym))) + `(let ((,stored-lisp-string ,lisp-string)) + (excl:with-native-string (,acl-native ,stored-lisp-string) + (let ((,cstring (if ,stored-lisp-string ,acl-native 0))) + ,@body)))) + #+(or openmcl digitool) + (let ((stored-lisp-string (gensym))) + `(let ((,stored-lisp-string ,lisp-string)) + (if (stringp ,stored-lisp-string) + (ccl:with-cstrs ((,cstring ,stored-lisp-string)) + ,@body) + (let ((,cstring +null-cstring-pointer+)) + ,@body)))) )
(defmacro with-cstrings (bindings &rest body) @@ -95,134 +103,179 @@
(defmacro convert-to-foreign-string (obj) #+lispworks - `(if (null ,obj) - +null-cstring-pointer+ - (fli:convert-to-foreign-string ,obj :external-format '(:latin-1 :eol-style :lf))) + (let ((stored (gensym))) + `(let ((,stored ,obj)) + (if (null ,stored) + +null-cstring-pointer+ + (fli:convert-to-foreign-string + ,stored + :external-format '(:latin-1 :eol-style :lf))))) #+allegro - `(if (null ,obj) - 0 - (values (excl:string-to-native ,obj))) + (let ((stored (gensym))) + `(let ((,stored ,obj)) + (if (null ,stored) + 0 + (values (excl:string-to-native ,stored))))) #+(or cmu scl) (let ((size (gensym)) (storage (gensym)) + (stored-obj (gensym)) (i (gensym))) - `(etypecase ,obj - (null - (alien:sap-alien (system:int-sap 0) (* (alien:unsigned 8)))) - (string - (let* ((,size (length ,obj)) - (,storage (alien:make-alien (alien:unsigned 8) (1+ ,size)))) - (setq ,storage (alien:cast ,storage (* (alien:unsigned 8)))) - (locally - (declare (optimize (speed 3) (safety 0))) - (dotimes (,i ,size) - (declare (fixnum ,i)) - (setf (alien:deref ,storage ,i) (char-code (char ,obj ,i)))) + `(let ((,stored-obj ,obj)) + (etypecase ,stored-obj + (null + (alien:sap-alien (system:int-sap 0) (* (alien:unsigned 8)))) + (string + (let* ((,size (length ,stored-obj)) + (,storage (alien:make-alien (alien:unsigned 8) (1+ ,size)))) + (setq ,storage (alien:cast ,storage (* (alien:unsigned 8)))) + (locally + (declare (optimize (speed 3) (safety 0))) + (dotimes (,i ,size) + (declare (fixnum ,i)) + (setf (alien:deref ,storage ,i) + (char-code (char ,stored-obj ,i)))) (setf (alien:deref ,storage ,size) 0)) - ,storage)))) + ,storage))))) #+sbcl (let ((size (gensym)) (storage (gensym)) + (stored-obj (gensym)) (i (gensym))) - `(etypecase ,obj - (null - (sb-alien:sap-alien (sb-sys:int-sap 0) (* (sb-alien:unsigned 8)))) - (string - (let* ((,size (length ,obj)) - (,storage (sb-alien:make-alien (sb-alien:unsigned 8) (1+ ,size)))) - (setq ,storage (sb-alien:cast ,storage (* (sb-alien:unsigned 8)))) - (locally - (declare (optimize (speed 3) (safety 0))) - (dotimes (,i ,size) - (declare (fixnum ,i)) - (setf (sb-alien:deref ,storage ,i) (char-code (char ,obj ,i)))) - (setf (sb-alien:deref ,storage ,size) 0)) - ,storage)))) - #+mcl - `(if (null ,obj) - +null-cstring-pointer+ - (let ((ptr (new-ptr (1+ (length ,obj))))) - (ccl::%put-cstring ptr ,obj) - ptr)) + `(let ((,stored-obj ,obj)) + (etypecase ,stored-obj + (null + (sb-alien:sap-alien (sb-sys:int-sap 0) (* (sb-alien:unsigned 8)))) + (string + (let* ((,size (length ,stored-obj)) + (,storage (sb-alien:make-alien (sb-alien:unsigned 8) (1+ ,size)))) + (setq ,storage (sb-alien:cast ,storage (* (sb-alien:unsigned 8)))) + (locally + (declare (optimize (speed 3) (safety 0))) + (dotimes (,i ,size) + (declare (fixnum ,i)) + (setf (sb-alien:deref ,storage ,i) + (char-code (char ,stored-obj ,i)))) + (setf (sb-alien:deref ,storage ,size) 0)) + ,storage))))) + #+(or openmcl digitool) + (let ((stored-obj (gensym))) + `(let ((,stored-obj ,obj)) + (if (null ,stored-obj) + +null-cstring-pointer+ + (let ((ptr (new-ptr (1+ (length ,stored-obj))))) + (ccl::%put-cstring ptr ,stored-obj) + ptr)))) )
- ;; Either length or null-terminated-p must be non-nil (defmacro convert-from-foreign-string (obj &key length (locale :default) (null-terminated-p t)) #+allegro - `(if (zerop ,obj) - nil - (if (eq ,locale :none) - (fast-native-to-string ,obj ,length) - (excl:native-to-string - ,obj - ,@(when length (list :length length)) - :truncate (not ,null-terminated-p)))) + (let ((stored-obj (gensym))) + `(let ((,stored-obj ,obj)) + (if (zerop ,stored-obj) + nil + (if (eq ,locale :none) + (fast-native-to-string ,stored-obj ,length) + (values + (excl:native-to-string + ,stored-obj + ,@(when length (list :length length)) + :truncate (not ,null-terminated-p))))))) #+lispworks - `(if (fli:null-pointer-p ,obj) - nil - (if (eq ,locale :none) - (fast-native-to-string ,obj ,length) - (fli:convert-from-foreign-string - ,obj - ,@(when length (list :length length)) - :null-terminated-p ,null-terminated-p - :external-format '(:latin-1 :eol-style :lf)))) + (let ((stored-obj (gensym))) + `(let ((,stored-obj ,obj)) + (if (fli:null-pointer-p ,stored-obj) + nil + (if (eq ,locale :none) + (fast-native-to-string ,stored-obj ,length) + (fli:convert-from-foreign-string + ,stored-obj + ,@(when length (list :length length)) + :null-terminated-p ,null-terminated-p + :external-format '(:latin-1 :eol-style :lf)))))) #+(or cmu scl) - `(if (null-pointer-p ,obj) - nil - (cmucl-naturalize-cstring (alien:alien-sap ,obj) - :length ,length - :null-terminated-p ,null-terminated-p)) + (let ((stored-obj (gensym))) + `(let ((,stored-obj ,obj)) + (if (null-pointer-p ,stored-obj) + nil + (cmucl-naturalize-cstring (alien:alien-sap ,stored-obj) + :length ,length + :null-terminated-p ,null-terminated-p)))) + #+sbcl - `(if (null-pointer-p ,obj) - nil - (sbcl-naturalize-cstring (sb-alien:alien-sap ,obj) - :length ,length - :null-terminated-p ,null-terminated-p)) - #+mcl + (let ((stored-obj (gensym))) + `(let ((,stored-obj ,obj)) + (if (null-pointer-p ,stored-obj) + nil + (sbcl-naturalize-cstring (sb-alien:alien-sap ,stored-obj) + :length ,length + :null-terminated-p ,null-terminated-p)))) + #+(or openmcl digitool) (declare (ignore null-terminated-p)) - #+mcl - `(if (ccl:%null-ptr-p ,obj) - nil - (ccl:%get-cstring ,obj 0 ,@(if length (list length) nil))) + #+(or openmcl digitool) + (let ((stored-obj (gensym))) + `(let ((,stored-obj ,obj)) + (if (ccl:%null-ptr-p ,stored-obj) + nil + #+digitool (ccl:%get-cstring + ,stored-obj 0 + ,@(if length (list length) nil)) + #+openmcl ,@(if length + `((ccl:%str-from-ptr ,stored-obj ,length)) + `((ccl:%get-cstring ,stored-obj)))))) )
(defmacro allocate-foreign-string (size &key (unsigned t)) - #+(or cmu scl) + #+ignore (let ((array-def (gensym))) `(let ((,array-def (list 'alien:array 'c-call:char ,size))) - (eval `(alien:cast (alien:make-alien ,,array-def) - ,(if ,unsigned + (eval `(alien:cast (alien:make-alien ,,array-def) + ,(if ,unsigned '(* (alien:unsigned 8)) '(* (alien:signed 8))))))) + + #+(or cmu scl) + `(alien:make-alien ,(if unsigned + '(alien:unsigned 8) + '(alien:signed 8)) + ,size) + #+sbcl - (let ((array-def (gensym))) - `(let ((,array-def (list 'sb-alien:array 'char ,size))) - (eval `(sb-alien:cast (sb-alien:make-alien ,,array-def) - ,(if ,unsigned - '(* (sb-alien:unsigned 8)) - '(* (sb-alien:signed 8))))))) + `(sb-alien:make-alien ,(if unsigned + '(sb-alien:unsigned 8) + '(sb-alien:signed 8)) + ,size) + #+lispworks - `(fli:allocate-foreign-object :type - ,(if unsigned - ''(:unsigned :char) + `(fli:allocate-foreign-object :type + ,(if unsigned + ''(:unsigned :char) :char) :nelems ,size) #+allegro (declare (ignore unsigned)) #+allegro `(ff:allocate-fobject :char :c ,size) - #+mcl + #+(or openmcl digitool) (declare (ignore unsigned)) - #+mcl + #+(or openmcl digitool) `(new-ptr ,size) )
+(defun foreign-string-length (foreign-string) + #+allegro `(ff:foreign-strlen ,foreign-string) + #-allegro + `(loop with size = 0 + until (char= (deref-array ,foreign-string '(:array :unsigned-char) size) #\Null) + do (incf size) + finally return size)) + + (defmacro with-foreign-string ((foreign-string lisp-string) &body body) (let ((result (gensym))) `(let* ((,foreign-string (convert-to-foreign-string ,lisp-string)) @@ -231,6 +284,11 @@ (free-foreign-object ,foreign-string) ,result)))
+(defmacro with-foreign-strings (bindings &body body) + `(with-foreign-string ,(car bindings) + ,@(if (cdr bindings) + `((with-foreign-strings ,(cdr bindings) ,@body)) + body)))
;; Modified from CMUCL's source to handle non-null terminated strings #+cmu @@ -280,53 +338,75 @@ (setf (char result i) (code-char (system:sap-ref-8 sap i)))) result)))
-#+sbcl +#+(and sbcl (not sb-unicode)) (defun sbcl-naturalize-cstring (sap &key length (null-terminated-p t)) - (declare (type sb-sys:system-area-pointer sap)) + (declare (type sb-sys:system-area-pointer sap) + (type (or null fixnum) length)) (locally - (declare (optimize (speed 3) (safety 0))) - (let ((null-terminated-length - (when null-terminated-p - (loop - for offset of-type fixnum upfrom 0 - until (zerop (sb-sys:sap-ref-8 sap offset)) - finally (return offset))))) - (if length - (if (and null-terminated-length - (> (the fixnum length) (the fixnum null-terminated-length))) - (setq length null-terminated-length)) - (setq length null-terminated-length))) - (let ((result (make-string length))) - (sb-kernel:copy-from-system-area sap 0 - result (* sb-vm:vector-data-offset - sb-vm:n-word-bits) - (* length sb-vm:n-byte-bits)) - result))) + (declare (optimize (speed 3) (safety 0))) + (let ((null-terminated-length + (when null-terminated-p + (loop + for offset of-type fixnum upfrom 0 + until (zerop (sb-sys:sap-ref-8 sap offset)) + finally (return offset))))) + (if length + (if (and null-terminated-length + (> (the fixnum length) (the fixnum null-terminated-length))) + (setq length null-terminated-length)) + (setq length null-terminated-length))) + (let ((result (make-string length))) + (funcall *system-copy-fn* sap 0 result +system-copy-offset+ + (* length +system-copy-multiplier+)) + result)))
+#+(and sbcl sb-unicode) +(defun sbcl-naturalize-cstring (sap &key length (null-terminated-p t)) + (declare (type sb-sys:system-area-pointer sap) + (type (or null fixnum) length)) + (locally + (declare (optimize (speed 3) (safety 0))) + (cond + (null-terminated-p + (let ((casted (sb-alien:cast (sb-alien:sap-alien sap (* char)) + #+sb-unicode sb-alien:utf8-string + #-sb-unicode sb-alien:c-string))) + (if length + (copy-seq (subseq casted 0 length)) + (copy-seq casted)))) + (t + (let ((result (make-string length))) + ;; this will not work in sb-unicode + (funcall *system-copy-fn* sap 0 result +system-copy-offset+ + (* length +system-copy-multiplier+)) + result)))))
-(def-function "strlen" - ((str (* :unsigned-char))) - :returning :unsigned-int)
+(eval-when (:compile-toplevel :load-toplevel :execute) + (def-function "strlen" + ((str (* :unsigned-char))) + :returning :unsigned-int)) + (def-type char-ptr-def (* :unsigned-char))
-#+(or lispworks (and allegro (not ics))) +#+(or (and allegro (not ics)) (and lispworks (not lispworks5))) (defun fast-native-to-string (s len) (declare (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0)) (type char-ptr-def s)) (let* ((len (or len (strlen s))) (str (make-string len))) (declare (fixnum len) - (type (simple-array (signed-byte 8) (*)) str)) + (type (simple-array #+lispworks base-char + #-lispworks (signed-byte 8) (*)) str)) (dotimes (i len str) - (setf (aref str i) + (setf (aref str i) (uffi:deref-array s '(:array :char) i)))))
-#+(and allegro ics) +#+(or (and allegro ics) lispworks5) (defun fast-native-to-string (s len) (declare (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0)) (type char-ptr-def s)) (let* ((len (or len (strlen s))) (str (make-string len))) (dotimes (i len str) - (setf (aref str i) (uffi:deref-array s '(:array :char) i))))) + (setf (schar str i) (code-char (uffi:deref-array s '(:array :unsigned-byte) i))))))
Modified: branches/xml-class-rework/thirdparty/uffi/tests/Makefile =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/Makefile 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/Makefile 2006-10-22 16:42:37 UTC (rev 2025) @@ -5,13 +5,9 @@ # Programer: Kevin M. Rosenberg # Date Started: Mar 2002 # -# CVS Id: $Id: Makefile,v 1.1 2004/06/23 08:27:10 hans Exp $ +# CVS Id: $Id$ # -# This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg -# -# UFFI users are granted the rights to distribute and use this software -# as governed by the terms of the Lisp Lesser GNU Public License -# (http://opensource.franz.com/preamble.html), also known as the LLGPL. +# This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg
SUBDIRS=
Modified: branches/xml-class-rework/thirdparty/uffi/tests/Makefile.msvc =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/Makefile.msvc 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/Makefile.msvc 2006-10-22 16:42:37 UTC (rev 2025) @@ -5,13 +5,10 @@ # Programer: Kevin M. Rosenberg # Date Started: Mar 2002 # -# CVS Id: $Id: Makefile.msvc,v 1.1 2004/06/23 08:27:10 hans Exp $ +# CVS Id: $Id$ # -# This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg +# This file, part of CLSQL, is Copyright (c) 2002-2005 by Kevin M. Rosenberg # -# CLSQL users are granted the rights to distribute and use this software -# as governed by the terms of the Lisp Lesser GNU Public License -# (http://opensource.franz.com/preamble.html), also known as the LLGPL.
BASE=c-test-fns
Modified: branches/xml-class-rework/thirdparty/uffi/tests/arrays.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/arrays.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/arrays.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,9 +7,9 @@ ;;;; Author: Kevin M. Rosenberg ;;;; Date Started: Mar 2002 ;;;; -;;;; $Id: arrays.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; ;;;; *************************************************************************
@@ -18,9 +18,9 @@ (uffi:def-constant +column-length+ 10) (uffi:def-constant +row-length+ 10)
-(uffi:def-foreign-type long-ptr '(* :long)) +(uffi:def-foreign-type long-ptr (* :long))
-(deftest array.1 +(deftest :array.1 (let ((a (uffi:allocate-foreign-object :long +column-length+)) (results nil)) (dotimes (i +column-length+) @@ -32,7 +32,7 @@ (0 1 4 9 16 25 36 49 64 81))
-(deftest array.2 +(deftest :array.2 (let ((a (uffi:allocate-foreign-object 'long-ptr +row-length+)) (results nil)) (dotimes (r +row-length+)
Modified: branches/xml-class-rework/thirdparty/uffi/tests/atoifl.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/atoifl.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/atoifl.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,9 +7,9 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Mar 2002 ;;;; -;;;; $Id: atoifl.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; ;;;; *************************************************************************
@@ -37,6 +37,6 @@ (uffi:with-cstring (str-cstring str) (c-atof str-cstring)))
-(deftest atoi.1 (atoi "123") 123) -(deftest atoi.2 (atoi "") 0) -(deftest atof.3 (atof "2.23") 2.23d0) +(deftest :atoi.1 (atoi "123") 123) +(deftest :atoi.2 (atoi "") 0) +(deftest :atof.3 (atof "2.23") 2.23d0)
Modified: branches/xml-class-rework/thirdparty/uffi/tests/casts.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/casts.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/casts.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -1,27 +1,31 @@ ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*- ;;;; ************************************************************************* -;;;; FILE IDENTIFICATION +;;;; FILE IDENTIFICAION ;;;; ;;;; Name: casts.lisp ;;;; Purpose: Tests of with-cast-pointer ;;;; Programmer: Kevin M. Rosenberg / Edi Weitz ;;;; Date Started: Aug 2003 ;;;; -;;;; $Id: casts.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; +;;;; This file, part of UFFI, is Copyright (c) 2003-2005 by Kevin M. Rosenberg +;;;; ;;;; *************************************************************************
(in-package #:uffi-tests)
(uffi:def-function ("cast_test_int" cast-test-int) () + :module "uffi_tests" :returning :pointer-void)
(uffi:def-function ("cast_test_float" cast-test-float) () + :module "uffi_tests" :returning :pointer-void)
-(deftest cast.1 +(deftest :cast.1 (progn (uffi:with-cast-pointer (temp (cast-test-int) :int) (assert (= (uffi:deref-pointer temp :int) 23))) @@ -33,7 +37,7 @@ t) t)
-(deftest cast.2 +(deftest :cast.2 (progn (uffi:with-cast-pointer (temp (cast-test-float) :double) (assert (= (uffi:deref-pointer temp :double) 3.21d0)))
Modified: branches/xml-class-rework/thirdparty/uffi/tests/compress.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/compress.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/compress.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,9 +7,9 @@ ;;;; Author: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: compress.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; ;;;; *************************************************************************
@@ -36,10 +36,8 @@ (newdestlen (uffi:deref-pointer destlen :long))) (unwind-protect (if (zerop result) - (values (uffi:convert-from-foreign-string - dest - :length newdestlen - :null-terminated-p nil) + (values (uffi:convert-from-foreign-usb8 + dest newdestlen) newdestlen) (error "zlib error, code ~D" result)) (progn @@ -74,12 +72,12 @@ (uffi:free-foreign-object destlen) (uffi:free-foreign-object dest)))))))
-(deftest compress.1 (map 'list #'char-code (compress "")) - (120 156 3 0 0 0 0 1)) -(deftest compress.2 (map 'list #'char-code (compress "test")) - (120 156 43 73 45 46 1 0 4 93 1 193)) -(deftest compress.3 (map 'list #'char-code (compress "test2")) - (120 156 43 73 45 46 49 2 0 6 80 1 243)) +(deftest :compress.1 (compress "") + #(120 156 3 0 0 0 0 1) 8) +(deftest :compress.2 (compress "test") + #(120 156 43 73 45 46 1 0 4 93 1 193) 12) +(deftest :compress.3 (compress "test2") + #(120 156 43 73 45 46 49 2 0 6 80 1 243) 13)
(defun compress-uncompress (str) (multiple-value-bind (compressed len) (compress str) @@ -89,6 +87,6 @@ uncompressed)))
-(deftest uncompress.1 "" "") -(deftest uncompress.2 "test" "test") -(deftest uncompress.3 "test2" "test2") +(deftest :uncompress.1 "" "") +(deftest :uncompress.2 "test" "test") +(deftest :uncompress.3 "test2" "test2")
Modified: branches/xml-class-rework/thirdparty/uffi/tests/foreign-loader.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/foreign-loader.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/foreign-loader.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,9 +7,9 @@ ;;;; Author: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: foreign-loader.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; ;;;; *************************************************************************
@@ -18,6 +18,8 @@
(in-package uffi-tests)
+#+clisp (uffi:load-foreign-library "/usr/lib/libz.so" :module "z") +#-clisp (unless (uffi:load-foreign-library (uffi:find-foreign-library #-(or macosx darwin) @@ -25,16 +27,20 @@ #+(or macosx darwin) "z" (list (pathname-directory *load-pathname*) - "/usr/local/lib/" "/usr/lib/" "/zlib/")) - :module "zlib" + "/usr/local/lib/" #+(or 64bit x86-64) "/usr/lib64/" + "/usr/lib/" "/zlib/")) + :module "zlib" :supporting-libraries '("c")) (warn "Unable to load zlib")) - -(unless (uffi:load-foreign-library + +#+clisp (uffi:load-foreign-library "/home/kevin/debian/src/uffi/tests/uffi-c-test.so" :module "uffi_tests") +#-clisp +(unless (uffi:load-foreign-library (uffi:find-foreign-library - "uffi-c-test" + '(#+(or 64bit x86-64) "uffi-c-test64" "uffi-c-test") (list (pathname-directory *load-truename*) - "/usr/lib/uffi/")) + "/usr/lib/uffi/" + "/home/kevin/debian/src/uffi/tests/")) :supporting-libraries '("c") :module "uffi_tests") (warn "Unable to load uffi-c-test library"))
Modified: branches/xml-class-rework/thirdparty/uffi/tests/foreign-var.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/foreign-var.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/foreign-var.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,8 +7,10 @@ ;;;; Authors: Kevin M. Rosenberg and Edi Weitz ;;;; Date Started: Aug 2003 ;;;; -;;;; $Id: foreign-var.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; +;;;; This file, part of UFFI, is Copyright (c) 2003-2005 by Kevin M. Rosenberg +;;; ;;;; *************************************************************************
(in-package #:uffi-tests) @@ -22,16 +24,15 @@ (def-foreign-var "float_neg_4_5" :float "uffi_tests") (def-foreign-var "double_3_1" :double "uffi_tests")
-(deftest fvar.1 uchar-13 13) -(deftest fvar.2 schar-neg-120 -120) -(deftest fvar.3 uword-257 257) -(deftest fvar.4 sword-neg-321 -321) -(deftest fvar.5 uint-1234567 1234567) -(deftest fvar.6 sint-neg-123456 -123456) -(deftest fvar.7 float-neg-4-5 -4.5f0) -(deftest fvar.8 double-3-1 3.1d0) +(deftest :fvar.1 uchar-13 13) +(deftest :fvar.2 schar-neg-120 -120) +(deftest :fvar.3 uword-257 257) +(deftest :fvar.4 sword-neg-321 -321) +(deftest :fvar.5 uint-1234567 1234567) +(deftest :fvar.6 sint-neg-123456 -123456) +(deftest :fvar.7 float-neg-4-5 -4.5f0) +(deftest :fvar.8 double-3-1 3.1d0)
- (uffi:def-foreign-var ("fvar_addend" *fvar-addend*) :int "uffi_tests")
(uffi:def-struct fvar-struct @@ -51,14 +52,14 @@ :returning :double :module "uffi_tests")
-(deftest fvarst.1 *fvar-addend* 3) -(deftest fvarst.2 (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i) 42) -(deftest fvarst.3 (= (+ *fvar-addend* +(deftest :fvarst.1 *fvar-addend* 3) +(deftest :fvarst.2 (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i) 42) +(deftest :fvarst.3 (= (+ *fvar-addend* (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i)) (fvar-struct-int)) t) -(deftest fvarst.4 (uffi:get-slot-value *fvar-struct* 'fvar-struct 'd) 3.2d0) -(deftest fvarst.5 (= (uffi:get-slot-value *fvar-struct* 'fvar-struct 'd) +(deftest :fvarst.4 (uffi:get-slot-value *fvar-struct* 'fvar-struct 'd) 3.2d0) +(deftest :fvarst.5 (= (uffi:get-slot-value *fvar-struct* 'fvar-struct 'd) (fvar-struct-double)) t)
Modified: branches/xml-class-rework/thirdparty/uffi/tests/getenv.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/getenv.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/getenv.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,9 +7,9 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: getenv.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; ;;;; *************************************************************************
@@ -51,11 +51,11 @@ (uffi:with-cstrings ((key-native key)) (c-unsetenv key-native)))
-(deftest getenv.1 (progn +(deftest :getenv.1 (progn (my-unsetenv "__UFFI_FOO1__") (my-getenv "__UFFI_FOO1__")) nil) -(deftest getenv.2 (progn +(deftest :getenv.2 (progn (my-setenv "__UFFI_FOO1__" "UFFI-TEST") (my-getenv "__UFFI_FOO1__")) "UFFI-TEST")
Modified: branches/xml-class-rework/thirdparty/uffi/tests/gethostname.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/gethostname.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/gethostname.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,9 +7,9 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: gethostname.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; ;;;; *************************************************************************
@@ -42,11 +42,11 @@ (uffi:convert-from-foreign-string name) (error "gethostname() failed.")))))
-(deftest gethostname.1 (stringp (gethostname)) t) -(deftest gethostname.2 (stringp (gethostname2)) t) -(deftest gethostname.3 (plusp (length (gethostname))) t) -(deftest gethostname.4 (plusp (length (gethostname2))) t) -(deftest gethostname.5 (gethostname) #.(gethostname2)) +(deftest :gethostname.1 (stringp (gethostname)) t) +(deftest :gethostname.2 (stringp (gethostname2)) t) +(deftest :gethostname.3 (plusp (length (gethostname))) t) +(deftest :gethostname.4 (plusp (length (gethostname2))) t) +(deftest :gethostname.5 (string= (gethostname) (gethostname2)) t)
Modified: branches/xml-class-rework/thirdparty/uffi/tests/make.sh =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/make.sh 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/make.sh 2006-10-22 16:42:37 UTC (rev 2025) @@ -2,17 +2,32 @@
case "`uname`" in Linux) os_linux=1 ;; + FreeBSD) os_freebsd=1 ;; + GNU/kFreeBSD) os_gnukfreebsd=1;; Darwin) os_darwin=1 ;; SunOS) os_sunos=1 ;; AIX) os_aix=1 ;; + GNU) os_gnu=1 ;; *) echo "Unable to identify uname " `uname` - exit 1 ;; + exit 1 ;; esac - + if [ "$os_linux" ]; then gcc -fPIC -DPIC -c $SOURCE -o $OBJECT gcc -shared $OBJECT -o $SHARED_LIB
+elif [ "$os_gnu" ]; then + gcc -fPIC -DPIC -c $SOURCE -o $OBJECT + gcc -shared $OBJECT -o $SHARED_LIB + +elif [ "$os_freebsd" ]; then + gcc -fPIC -DPIC -c $SOURCE -o $OBJECT + gcc -shared $OBJECT -o $SHARED_LIB + +elif [ "$os_gnukfreebsd" ]; then + gcc -fPIC -DPIC -c $SOURCE -o $OBJECT + gcc -shared $OBJECT -o $SHARED_LIB + elif [ "$os_darwin" ]; then cc -dynamic -c $SOURCE -o $OBJECT ld -bundle /usr/lib/bundle1.o -flat_namespace -undefined suppress -o $BASE.dylib $OBJECT
Added: branches/xml-class-rework/thirdparty/uffi/tests/objects.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/objects.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/objects.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -0,0 +1,70 @@ +;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*- +;;;; ************************************************************************* +;;;; FILE IDENTIFICATION +;;;; +;;;; Name: pointers.lisp +;;;; Purpose: Test file for UFFI pointers +;;;; Programmer: Kevin M. Rosenberg +;;;; Date Started: Aug 2003 +;;;; +;;;; $Id: objects.lisp 10608 2005-07-01 00:39:48Z kevin $ +;;;; +;;;; This file, part of UFFI, is Copyright (c) 2003-2005 by Kevin M. Rosenberg +;;;; +;;;; ************************************************************************* + +(in-package #:uffi-tests) + +(deftest :chptr.1 + (let ((native-string "test string")) + (uffi:with-foreign-string (fs native-string) + (ensure-char-character + (deref-pointer fs :char)))) + #\t) + +(deftest :chptr.2 + (let ((native-string "test string")) + (uffi:with-foreign-string (fs native-string) + (ensure-char-character + (deref-pointer fs :unsigned-char)))) + #\t) + +(deftest :chptr.3 + (let ((native-string "test string")) + (uffi:with-foreign-string (fs native-string) + (ensure-char-integer + (deref-pointer fs :unsigned-char)))) + 116) + +(deftest :chptr.4 + (let ((native-string "test string")) + (uffi:with-foreign-string (fs native-string) + (integerp + (ensure-char-integer + (deref-pointer fs :unsigned-char))))) + t) + +(deftest :chptr.5 + (let ((fs (uffi:allocate-foreign-object :unsigned-char 128))) + (setf (uffi:deref-array fs '(:array :unsigned-char) 0) + (uffi:ensure-char-storable #\a)) + (setf (uffi:deref-array fs '(:array :unsigned-char) 1) + (uffi:ensure-char-storable (code-char 0))) + (uffi:convert-from-foreign-string fs)) + "a") + +;; This produces an array which needs fli:foreign-aref to access +;; rather than fli:dereference + +#-lispworks +(deftest :chptr.6 + (uffi:with-foreign-object (fs '(:array :unsigned-char 128)) + (setf (uffi:deref-array fs '(:array :unsigned-char) 0) + (uffi:ensure-char-storable #\a)) + (setf (uffi:deref-array fs '(:array :unsigned-char) 1) + (uffi:ensure-char-storable (code-char 0))) + (uffi:convert-from-foreign-string fs)) + "a") + + +
Modified: branches/xml-class-rework/thirdparty/uffi/tests/package.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/package.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/package.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,7 +7,9 @@ ;;;; Author: Kevin M. Rosenberg ;;;; Date Started: Apr 2003 ;;;; -;;;; $Id: package.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; This file, part of UFFI, is Copyright (c) 2003-2005 by Kevin M. Rosenberg +;;;; +;;;; $Id$ ;;;; *************************************************************************
(defpackage #:uffi-tests
Modified: branches/xml-class-rework/thirdparty/uffi/tests/strtol.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/strtol.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/strtol.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,9 +7,9 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: strtol.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; ;;;; *************************************************************************
@@ -54,10 +54,10 @@ (uffi:free-foreign-object str-native) (uffi:free-foreign-object endptr)))))
-(deftest strtol.1 (strtol "123") 123 t) -(deftest strtol.2 (strtol "0") 0 t) -(deftest strtol.3 (strtol "55a") 55 2) -(deftest strtol.4 (strtol "a") nil nil) +(deftest :strtol.1 (strtol "123") 123 t) +(deftest :strtol.2 (strtol "0") 0 t) +(deftest :strtol.3 (strtol "55a") 55 2) +(deftest :strtol.4 (strtol "a") nil nil)
Modified: branches/xml-class-rework/thirdparty/uffi/tests/structs.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/structs.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/structs.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,9 +7,9 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: structs.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; ;;;; *************************************************************************
@@ -24,8 +24,13 @@ (uffi:def-foreign-type foo-ptr (* foo))
;; tests that compilation worked -(deftest structs.1 +(deftest :structs.1 (with-foreign-object (p 'foo) t) t)
+(deftest :structs.2 + (progn + (uffi:def-foreign-type foo-struct (:struct foo)) + t) + t)
Modified: branches/xml-class-rework/thirdparty/uffi/tests/time.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/time.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/time.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,9 +7,9 @@ ;;;; Author: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: time.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; ;;;; *************************************************************************
@@ -26,36 +26,42 @@ (year :int) (wday :int) (yday :int) - (isdst :int)) + (isdst :int) + ;; gmoffset present on SusE SLES9 + (gmoffset :long))
(uffi:def-function ("time" c-time) ((time (* time-t))) :returning time-t)
-(uffi:def-function ("gmtime" c-gmtime) +(uffi:def-function "gmtime" ((time (* time-t))) - :returning (* tm)) + :returning (:struct-pointer tm))
+(uffi:def-function "asctime" + ((time (:struct-pointer tm))) + :returning :cstring) + (uffi:def-type time-t :unsigned-long) -(uffi:def-type tm-pointer (* tm)) +(uffi:def-type tm-pointer (:struct-pointer tm))
-(deftest time.1 +(deftest :time.1 (uffi:with-foreign-object (time 'time-t) (setf (uffi:deref-pointer time :unsigned-long) 7381) (uffi:deref-pointer time :unsigned-long)) 7381)
-(deftest time.2 - (uffi:with-foreign-object (time 'time-t) - (setf (uffi:deref-pointer time :unsigned-long) 7381) - (let ((tm-ptr (the tm-pointer (c-gmtime time)))) - (values (1+ (uffi:get-slot-value tm-ptr 'tm 'mon)) - (uffi:get-slot-value tm-ptr 'tm 'mday) - (+ 1900 (uffi:get-slot-value tm-ptr 'tm 'year)) - (uffi:get-slot-value tm-ptr 'tm 'hour) - (uffi:get-slot-value tm-ptr 'tm 'min) - (uffi:get-slot-value tm-ptr 'tm 'sec) - ))) +(deftest :time.2 + (uffi:with-foreign-object (time 'time-t) + (setf (uffi:deref-pointer time :unsigned-long) 7381) + (let ((tm-ptr (the tm-pointer (gmtime time)))) + (values (1+ (uffi:get-slot-value tm-ptr 'tm 'mon)) + (uffi:get-slot-value tm-ptr 'tm 'mday) + (+ 1900 (uffi:get-slot-value tm-ptr 'tm 'year)) + (uffi:get-slot-value tm-ptr 'tm 'hour) + (uffi:get-slot-value tm-ptr 'tm 'min) + (uffi:get-slot-value tm-ptr 'tm 'sec) + ))) 1 1 1970 2 3 1)
@@ -80,7 +86,7 @@ (uffi:get-slot-value tv 'timeval 'usecs)) res))))
-(deftest timeofday.1 +(deftest :timeofday.1 (multiple-value-bind (t1 res1) (get-utime) (multiple-value-bind (t2 res2) (get-utime) (and (or (= t2 t1) (> t2 t1)) @@ -90,3 +96,15 @@ (zerop res2)))) t) +(defun posix-time-to-asctime (secs) + "Converts number of seconds elapsed since 00:00:00 on January 1, 1970, Coordinated Universal Time (UTC)" + (string-right-trim + '(#\newline #\return) + (uffi:convert-from-cstring + (uffi:with-foreign-object (time 'time-t) + (setf (uffi:deref-pointer time :unsigned-long) secs) + (asctime (gmtime time)))))) + +(deftest :time.3 + (posix-time-to-asctime 0) + "Thu Jan 1 00:00:00 1970")
Modified: branches/xml-class-rework/thirdparty/uffi/tests/uffi-c-test-lib.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/uffi-c-test-lib.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/uffi-c-test-lib.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,9 +7,9 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Mar 2002 ;;;; -;;;; $Id: uffi-c-test-lib.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; ;;;; *************************************************************************
@@ -19,7 +19,7 @@ (uffi:def-function ("cs_to_upper" cs-to-upper) ((input (* :unsigned-char))) :returning :void - ) + :module "uffi_tests")
(defun string-to-upper (str) (uffi:with-foreign-string (str-foreign str) @@ -29,17 +29,34 @@ (uffi:def-function ("cs_count_upper" cs-count-upper) ((input :cstring)) :returning :int - ) + :module "uffi_tests")
(defun string-count-upper (str) (uffi:with-cstring (str-cstring str) - (cs-count-upper str-cstring))) + (cs-count-upper str-cstring)))
(uffi:def-function ("half_double_vector" half-double-vector) ((size :int) (vec (* :double))) - :returning :void) + :returning :void + :module "uffi_tests")
+(uffi:def-function ("return_long_negative_one" return-long-negative-one) + () + :returning :long + :module "uffi_tests") + +(uffi:def-function ("return_int_negative_one" return-int-negative-one) + () + :returning :int + :module "uffi_tests") + +(uffi:def-function ("return_short_negative_one" return-short-negative-one) + () + :returning :short + :module "uffi_tests") + + (uffi:def-constant +double-vec-length+ 10) (defun test-half-double-vector () (let ((vec (uffi:allocate-foreign-object :double +double-vec-length+)) @@ -69,10 +86,13 @@ (half-double-vector +double-vec-length+ (system:vector-sap vec))) vec))
-(deftest c-test.1 (string-to-upper "this is a test") "THIS IS A TEST") -(deftest c-test.2 (string-to-upper nil) nil) -(deftest c-test.3 (string-count-upper "This is a Test") 2) -(deftest c-test.4 (string-count-upper nil) -1) -(deftest c-test.5 (test-half-double-vector) +(deftest :c-test.1 (string-to-upper "this is a test") "THIS IS A TEST") +(deftest :c-test.2 (string-to-upper nil) nil) +(deftest :c-test.3 (string-count-upper "This is a Test") 2) +(deftest :c-test.4 (string-count-upper nil) -1) +(deftest :c-test.5 (test-half-double-vector) (0.0d0 0.5d0 1.0d0 1.5d0 2.0d0 2.5d0 3.0d0 3.5d0 4.0d0 4.5d0)) +(deftest :c-test.6 (return-long-negative-one) -1) +(deftest :c-test.7 (return-int-negative-one) -1) +(deftest :c-test.8 (return-short-negative-one) -1)
Modified: branches/xml-class-rework/thirdparty/uffi/tests/uffi-c-test.c =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/uffi-c-test.c 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/uffi-c-test.c 2006-10-22 16:42:37 UTC (rev 2025) @@ -6,14 +6,10 @@ * Programer: Kevin M. Rosenberg * Date Started: Mar 2002 * - * CVS Id: $Id: uffi-c-test.c,v 1.1 2004/06/23 08:27:10 hans Exp $ + * CVS Id: $Id$ * - * This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg + * This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg * - * UFFI users are granted the rights to distribute and use this software - * as governed by the terms of the Lisp Lesser GNU Public License - * (http://opensource.franz.com/preamble.html), also known as the LLGPL. - * These variables are correct for GCC * you'll need to modify these for other compilers ***************************************************************************/ @@ -119,6 +115,27 @@ return y; }
+DLLEXPORT +long +return_long_negative_one () +{ + return -1; +} + +DLLEXPORT +int +return_int_negative_one () +{ + return -1; +} + +DLLEXPORT +short +return_short_negative_one () +{ + return -1; +} + DLLEXPORT int fvar_addend = 3;
typedef struct {
Modified: branches/xml-class-rework/thirdparty/uffi/tests/union.lisp =================================================================== --- branches/xml-class-rework/thirdparty/uffi/tests/union.lisp 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/tests/union.lisp 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,9 +7,9 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Mar 2002 ;;;; -;;;; $Id: union.lisp,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; ;;;; *************************************************************************
@@ -35,12 +35,37 @@ (* 256 (char-code #\C)) (* 1 128)))
-(deftest union.1 (uffi:ensure-char-character - (uffi:get-slot-value *u* 'tunion1 'char)) #\A) +(deftest :union.1 + (uffi:ensure-char-character + (uffi:get-slot-value *u* 'tunion1 'char)) + #\A)
-#-(or sparc sparc-v9 mcl) -(deftest union.2 (plusp (uffi:get-slot-value *u* 'tunion1 'uint)) t) +(deftest :union.2 + (uffi:ensure-char-integer + (uffi:get-slot-value *u* 'tunion1 'char)) + 65)
+#-(or sparc sparc-v9 openmcl digitool) +(deftest :union.3 (plusp (uffi:get-slot-value *u* 'tunion1 'uint)) t)
-;; (uffi:free-foreign-object u))
+(uffi:def-union foo-u + (bar :pointer-self)) + +(uffi:def-foreign-type foo-u-ptr (* foo-u)) + +;; tests that compilation worked +(deftest :unions.4 + (with-foreign-object (p 'foo-u) + t) + t) + +(deftest :unions.5 + (progn + (uffi:def-foreign-type foo-union (:union foo-u)) + t) + t) + + + +
Modified: branches/xml-class-rework/thirdparty/uffi/uffi-tests.asd =================================================================== --- branches/xml-class-rework/thirdparty/uffi/uffi-tests.asd 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/uffi-tests.asd 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,13 +7,15 @@ ;;;; Author: Kevin M. Rosenberg ;;;; Date Started: Apr 2003 ;;;; -;;;; $Id: uffi-tests.asd,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; *************************************************************************
(defpackage #:uffi-tests-system (:use #:asdf #:cl)) (in-package #:uffi-tests-system)
+(operate 'load-op 'uffi) + (defvar *library-file-dir* (append (pathname-directory *load-truename*) (list "tests")))
@@ -21,28 +23,47 @@ ())
(defmethod output-files ((o compile-op) (c uffi-test-source-file)) - (let ((found (some #'(lambda (dir) - (probe-file (make-pathname :directory dir - :name (component-name c) - :type "so"))) - '((:absolute "usr" "lib" "uffi"))))) + (let* ((library-file-type + (funcall (intern (symbol-name'#:default-foreign-library-type) + (symbol-name '#:uffi)))) + (found + (some #'(lambda (dir) + (probe-file (make-pathname + :directory dir + :name (component-name c) + :type library-file-type))) + '((:absolute "usr" "lib" "uffi"))))) (list (if found found (make-pathname :name (component-name c) - :type "so" + :type library-file-type :directory *library-file-dir*)))))
(defmethod perform ((o load-op) (c uffi-test-source-file)) - nil) ;; lisp loader file will load library + nil) ;;; library will be loaded by a loader file
+(defmethod operation-done-p ((o load-op) (c uffi-test-source-file)) + (and (symbol-function (intern (symbol-name '#:cs-count-upper) + (find-package '#:uffi-tests))) + t)) + (defmethod perform ((o compile-op) (c uffi-test-source-file)) - (unless (zerop (run-shell-command - "cd ~A; make" - (namestring (make-pathname :name nil - :type nil - :directory *library-file-dir*)))) - (error 'operation-error :component c :operation o))) + (unless (operation-done-p o c) + #-(or win32 mswindows) + (unless (zerop (run-shell-command + #-freebsd "cd ~A; make" + #+freebsd "cd ~A; gmake" + (namestring (make-pathname :name nil + :type nil + :directory *library-file-dir*)))) + (error 'operation-error :component c :operation o))))
+(defmethod operation-done-p ((o compile-op) (c uffi-test-source-file)) + (or (and (probe-file #p"/usr/lib/uffi/uffi-c-test.so") t) + (let ((lib (make-pathname :defaults (component-pathname c) + :type (uffi:default-foreign-library-type)))) + (and (probe-file lib) + (> (file-write-date lib) (file-write-date (component-pathname c)))))))
(defsystem uffi-tests :depends-on (:uffi) @@ -50,8 +71,8 @@ ((:module tests :components ((:file "rt") - (:uffi-test-source-file "uffi-c-test") (:file "package" :depends-on ("rt")) + (:uffi-test-source-file "uffi-c-test" :depends-on ("package")) (:file "strtol" :depends-on ("package")) (:file "atoifl" :depends-on ("package")) (:file "getenv" :depends-on ("package")) @@ -59,7 +80,7 @@ (:file "union" :depends-on ("package")) (:file "arrays" :depends-on ("package")) (:file "structs" :depends-on ("package")) - (:file "pointers" :depends-on ("package")) + (:file "objects" :depends-on ("package")) (:file "time" :depends-on ("package")) (:file "foreign-loader" :depends-on ("package" "uffi-c-test")) (:file "uffi-c-test-lib" :depends-on ("foreign-loader"))
Modified: branches/xml-class-rework/thirdparty/uffi/uffi.asd =================================================================== --- branches/xml-class-rework/thirdparty/uffi/uffi.asd 2006-10-22 16:40:58 UTC (rev 2024) +++ branches/xml-class-rework/thirdparty/uffi/uffi.asd 2006-10-22 16:42:37 UTC (rev 2025) @@ -7,19 +7,16 @@ ;;;; Author: Kevin M. Rosenberg ;;;; Date Started: Aug 2002 ;;;; -;;;; $Id: uffi.asd,v 1.1 2004/06/23 08:27:10 hans Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg ;;;; -;;;; UFFI users are granted the rights to distribute and use this software -;;;; as governed by the terms of the Lisp Lesser GNU Public License -;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; *************************************************************************
(defpackage #:uffi-system (:use #:asdf #:cl)) (in-package #:uffi-system)
-#+(or allegro lispworks cmu mcl cormanlisp sbcl scl) +#+(or allegro lispworks cmu openmcl digitool cormanlisp sbcl scl) (defsystem uffi :name "uffi" :author "Kevin Rosenberg kevin@rosenberg.net" @@ -28,22 +25,22 @@ :licence "Lessor Lisp General Public License" :description "Universal Foreign Function Library for Common Lisp" :long-description "UFFI provides a universal foreign function interface (FFI) for Common Lisp. UFFI supports CMUCL, Lispworks, and AllegroCL." - + :components ((:module :src :components ((:file "package") (:file "primitives" :depends-on ("package")) - #+mcl (:file "readmacros-mcl" :depends-on ("package")) + #+(or openmcl digitool) (:file "readmacros-mcl" :depends-on ("package")) (:file "objects" :depends-on ("primitives")) - (:file "strings" :depends-on ("primitives" "functions" "aggregates" "objects")) (:file "aggregates" :depends-on ("primitives")) + (:file "strings" :depends-on ("primitives" "functions" "aggregates" "objects")) (:file "functions" :depends-on ("primitives")) (:file "libraries" :depends-on ("package")) (:file "os" :depends-on ("package")))) ))
-#+(or allegro lispworks cmu mcl cormanlisp sbcl scl) +#+(or allegro lispworks cmu openmcl digitool cormanlisp sbcl scl) (defmethod perform ((o test-op) (c (eql (find-system 'uffi)))) (oos 'load-op 'uffi-tests) (oos 'test-op 'uffi-tests :force t))